gpt4 book ai didi

javascript - 词法 this 和闭包

转载 作者:行者123 更新时间:2023-12-03 01:36:00 27 4
gpt4 key购买 nike

我试图了解传递给 setTimeout 的箭头函数如何记住上一个执行上下文中的 this 的值。我知道在执行箭头函数时会使用词法作用域规则查找 this 值。这是否意味着箭头函数关闭变量和 this 关键字?

var obj = {
name: 'TestName',
func: function() {
console.log(this)
setTimeout(() => console.log(this), 1000)
}
}

obj.func() //{name: "TestName", func: ƒ}

最佳答案

实际上,使用粗箭头表示法的全部目的是继承父作用域。箭头函数的主要应用是下拉父作用域。当我们调用 setTimeout 时,链发生如下:

  1. 调用进入调用堆栈
  2. 它被传输到Web-Browser api空间,等待间隔时间。
  3. 现在,间隔时间完成后,它将由 Event-Loop 处理,并将其传输到 JS-queue
  4. 命令执行将等待队列中的其他项执行完毕,然后当队列为空时,它将再次将执行流程转移到 Call-Stack。
  5. 现在将执行 setTimeout 内的命令。

    JS execution flow

关于javascript - 词法 this 和闭包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51069700/

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