function foo() { "use strict"; console.log( this.a ); }var a = 2; foo();
使用严格模式,默认绑定无法到达全局,出现undefined这个可以理解
但是
用一个匿名函数就:
function foo() { console.log( this.a ); } var a = 2; (function(){ "use strict"; foo(); // 2 })();
这要如何理解,这里的this不是应该指向匿名函数?调用栈不是全局=>匿名函数=>foo?
补充:疑惑在于为什么第二种写法会是那样的结果。
备注:讨论只局限在es3范畴,请不要用胖箭头它的this指向和es3不同
元芳怎么了
相关分类