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

2017-08-20 16:20发布

3959 5 6
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指向的是全局对象。

59人赞 添加讨论(1) 举报

指定window.x = 2

71人赞 添加讨论(0)举报

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

57人赞 添加讨论(0)举报

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

38人赞 添加讨论(0)举报

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

37人赞 添加讨论(0)举报

一周热门 更多>