优艾设计网

技术之瞳上面的这段代码的输出理解?

优艾设计网 https://www.uibq.com 2023-04-06 18:55 出处:网络 作者:PS入门教程
function a(){ y = function () { x = 2; }; return function () { var x = 3; y(); console.优艾设计网_设计圈log(this.x); debugger; }.apply(this, arguments); } a();//2 为什么是输出 2。辰宝besos

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


0

精彩评论

暂无评论...
验证码 换一张
取 消