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。
2
当一个函数作为普通函数调用的时候,其this指向的是全局对象。
指定window.x = 2
因为这里绑定了this的作用域,而这里的this其实是window作用域。所以y函数执行之后this.x == 2, x == 3 输出结果。
在非严格模式下不使用var定义一个变量的话,会使得这个变量作为全局对象的属性存在。浏览器即window,Node即global。
然后你又在window下调用了a 当然打印2了
最多设置5个标签!
付费偷看金额在0.1-10元之间
当一个函数作为普通函数调用的时候,其this指向的是全局对象。
指定window.x = 2
因为这里绑定了this的作用域,而这里的this其实是window作用域。
所以y函数执行之后this.x == 2, x == 3 输出结果。
在非严格模式下不使用var定义一个变量的话,会使得这个变量作为全局对象的属性存在。浏览器即window,Node即global。
然后你又在window下调用了a 当然打印2了
一周热门 更多>