爷爷说 之 闭包那点事儿

爷爷说 之 闭包那点事儿,第1张

示例一:
//示例一:
var x = function(){
    var _stat=12;
    var iMethod = function(){
        return 23*_stat;
    }
    return iMethod;
}
y = x();

Chrome浏览器控制台输出:

ƒ (){
	return 23*_stat;
}

原因:
y=x();意思是y等于x函数的返回值,而返回值是iMethod,所以打印输出为iMethod函数。

示例二:
//示例二:
var x = function(){
 var _stat=12;
 var iMethod = function(){
     return 23*_stat;
 }
 return iMethod;
}
y = x();
z = y();

Chrome浏览器控制台输出:

276

原因:
y=x();意思是y等于x函数的返回值,而返回值是iMethod,所以打印输出为iMethod函数。
而z = y();意思是z等于y函数的返回值,即调用iMethod。

换个思维理解:
  1. 闭包类似于Java的对象,不同的是,对象可以有很多方法,但闭包是只有一个方法的类。
  2. 闭包是指引用了另一个函数作用域中变量的函数。
  3. 函数才有闭包的概念。闭包是一种特殊的函数,特殊之处就是能取到非全局非局部变量。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/langs/728752.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-26
下一篇 2022-04-26

发表评论

登录后才能评论

评论列表(0条)

保存