js每日一题
考虑下面代码片段。控制台的额输出是什么,为什么?
(function(x){
return (function(y){
console.log(x);
})(2)
})(1);
答案:
输出1,即使x的值从未在内部函数中设置。
原因如下:
在JavaScript中,闭包被实现为“内部函数”;即在另一功能的主体内定义的功能。闭包的一个重要特征是内部函数仍然可以访问外部函数的变量。
因此,在这个例子中,因为x没有在内部函数中定义,所以在外部函数的作用域中搜索一个定义的变量x,该变量的值为1。
每天进步一点点!!!!