function a(){
y = function () {
x = 2;
};
return function () {
var x = 3;
y();
console.log(this.x);
debugger;
}.apply(this, arguments);
}
a(); //2
为什么是输出 2
。
function a(){
y = function () {
x = 2;
};
return function () {
var x = 3;
y();
console.log(this.x);
debugger;
}.apply(this, arguments);
}
a(); //2
为什么是输出 2
。
在非严格模式下不使用var定义一个变量的话,会使得这个变量作为全局对象的属性存在。浏览器即window,Node即global。
当一个函数作为普通函数调用的时候,其this指向的是全局对象。
13 回答12.9k 阅读
7 回答2.1k 阅读
3 回答1.3k 阅读✓ 已解决
2 回答1.3k 阅读✓ 已解决
6 回答1.2k 阅读✓ 已解决
6 回答1.1k 阅读
3 回答1.3k 阅读✓ 已解决
指定window.x = 2
然后你又在window下调用了a 当然打印2了