JS中的闭包

作者: osoLife | 来源:发表于2017-05-04 12:26 被阅读0次

逃脱(内部函数脱离定义它们的外部函数)

全局变量

var n2;
function fn1(){
    var n1=1;
    function fn2(){
        console.log(n1);
    }
    n2=fn2;
}
fn1();
n2(); //1

返回值

function fn1(){
    var n1=1;
    function fn2(){
        console.log(n1);
    }
    return fn2;
}
fn1()(); //1

实现一个变量的累加

全局变量

var num=0;
function add(){
    num++;
    return num;
}
alert(add()); //1
alert(add()); //2

使用闭包

function add(){
    var num=0;
    return function(){
        num++;
        return num;
    };
}
var fn=add();
alert(fn()); //1
alert(fn()); //2

闭包中的this(默认指向window)

var name='moli';
var obj={
    name:'michael',
    fn:function(){
        return function(){
            return this.name;
        };
    }
};
alert(obj.fn()()); //moli(this指向window)
//改变this指向方法一
var name='moli';
var obj={
    name:'michael',
    fn:function(){
        return function(){
            return this.name;
        };
    }
};
alert(obj.fn().call(obj)); //michael(this指向obj)
//改变this指向方法二
var name='moli';
var obj={
    name:'michael',
    fn:function(){
        var _this=this; //obj
        return function(){
            return _this.name;
        };
    }
};
alert(obj.fn()()); //michael(this指向obj)

结束语

如果喜欢本文,记得点赞并加关注哟。

相关文章

  • JS闭包大结局(JS闭包系列3)

    在上一篇中再谈JS闭包(JS闭包系列2),我详细的介绍了JS中的变量作用域相关的概念,结合第一节关于JS闭包(JS...

  • 简单的聊一下闭包

    js中的闭包 闭包是学习js中永远也绕不过去的一个坎,那么,今天我们就去一段简单的代码开始聊一聊闭包 什么是闭包 ...

  • 浅谈闭包

    js中的闭包 闭包是学习js中永远也绕不过去的一个坎,那么,今天我们就去一段简单的代码开始聊一聊闭包 什么是闭包 ...

  • php之闭包函数(Closure)

    php闭包函数(Closure) JS闭包 js和php闭包使用和区别

  • 学习JavaScript闭包和作用域笔记

    JS JavaScript闭包和作用域 闭包 JavaScript高级程序设计中对闭包的定义:闭包是指有权访问另外...

  • JS闭包

    JS闭包 闭包练习

  • 再谈JS闭包(JS闭包系列2)

    这篇文章,来继续谈谈Javascript闭包的剩余问题。因为在上一篇文章中关于JS闭包(JS闭包系列1)主要简单的...

  • 2018-01-10

    js中的闭包 一.什么是闭包 闭包官方的解释是:闭包就是能够读取其他函数内部变量的函数。由于在javascr...

  • js经典题目

    1闭包 链接:学习Javascript闭包(Closure) setTimeout在js单线程中只是放在队列中并未...

  • 前端面试题(持续补充)

    js,node.js基础: 闭包 闭包是能够读取其他函数内部变量的函数。在js中,只有函数内部的子函数可以访问内部...

网友评论

    本文标题:JS中的闭包

    本文链接:https://www.haomeiwen.com/subject/vbbrtxtx.html