function a(){ y = function () { x = 2; }; return function () { var x = 3; y(); console.优艾设计网_设计圈log(this.x); debugger; }.apply(this, arguments); } a();//2
为什么是输出 2
。
辰宝besos 优艾设计网_PS百科 2022-04-24 19:30
在非严格模式下不使用var定义一个变量的话,会使得这个变量作为全局对象的属性存在。浏览器即window,Node即global。
a397460849 优艾设计网_Photoshop问答 2022-04-24 19:40
因为这里绑定了this的作用域,而这里的this其实是window作用域。所以y函数执行之后this.x == 2, x == 3 输出结果。
vivianlizi19948 2022-04-24 19:45 优艾设计网_设计模板
指定window.x = 2
a397460849 2022-04-24 19:45 优艾设计网_Photoshop百科
然后你又在window下调用了a 当然打印2了
女神angelababy 优艾设计网_设计百科 2022-04-24 19:46
当一个函数作为普通函数调用的时候,其this指向的是全局对象。
精彩评论