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不同
不应该是这样吗
或者这样?
我应该解答了啊...
不是,上面的箭头函数的才是...
this
的绑定方式你可以参考https://github.com/getify/You...
只有箭头函数的情况下才是词法作用域
你直接调用
foo()
默认绑定 没use strict
绑定到全局变量window