技术之瞳上面的这段代码的输出理解 财富值6

2017-08-20 16:20发布

function a(){     y = function () {         x = 2;     };     return function () {         var x = 3;         y();         console.log(this.x);         debugger;     }.apply(this, arguments); } a();  //2

为什么是输出 2

5条回答

当一个函数作为普通函数调用的时候,其this指向的是全局对象。

指定window.x = 2

因为这里绑定了this的作用域,而这里的this其实是window作用域。
所以y函数执行之后this.x == 2, x == 3 输出结果。

在非严格模式下不使用var定义一个变量的话,会使得这个变量作为全局对象的属性存在。浏览器即window,Node即global。

然后你又在window下调用了a 当然打印2了

一周热门 更多>