【发布时间】:2011-04-21 05:57:35
【问题描述】:
我在这里看到了这个 Javascript 测验:http://www.netfxharmonics.com/2008/01/NetFX-Harmonics-JavaScript-Quiz
我无法弄清楚这个问题:
(function(){
var a = 1;
var b = 2;
(function( ) { a = b; var b; })( );
console.log('a:'+ a); // => "a:undefined"
console.log('b:'+ b); // => "b:2"
})()
但是,如果您从内部函数中删除 var b; 声明,那么 a == 2 就像您所期望的那样。
为什么会这样?
(你可以在这里玩:http://jsfiddle.net/gnhMZ/)
【问题讨论】:
标签: javascript closures