gpt4 book ai didi

javascript - 为什么这个关键字不是指独立 JS 函数中的窗口

转载 作者:行者123 更新时间:2023-11-30 07:15:00 25 4
gpt4 key购买 nike

我只是在 JS 中尝试作用域和 this 关键字,在编写以下代码时我真的很困惑,正如我所期待的那样 console.log(a)打电话后 f()成为5 , 但它给了我 10 .

我的问题是:

  1. 不是 this独立函数中的关键字是指 window
  2. 如果是,那么函数内部的代码是不是和window.a = 5一样呢?和 a 的值应更新为 5
  3. 如果不是,为什么 console.log(this)结果在窗口中,但值为 a (哪个是全局性的)没有更新?

JS Fiddle

var a = 10;

function f(){
this.a = 5;
console.log(a);
}

console.log(a);
f();
console.log(a);

最佳答案

如果代码在全局范围内运行,那么它将产生您期望的结果。您的 jsFiddle 的问题是它在全局范围内运行。因此 var a; 创建了一个本地 变量 a,而 this.a 引用了全局 变量 a

这是您在全局范围内运行的代码:http://jsfiddle.net/grayoork/ (注意“不换行 - ...”)设置。

引用:MDN - this .


因此 var a;this.a 将引用相同的变量当且仅当:

  • 代码在全局范围内运行
  • this 里面的 f 指的是全局对象,如果
    • f 作为f() 执行并且未绑定(bind),或者绑定(bind)到全局对象
    • f 不是严格模式。

关于javascript - 为什么这个关键字不是指独立 JS 函数中的窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26867956/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com