gpt4 book ai didi

javascript - JS 闭包 - x 的值是多少?

转载 作者:行者123 更新时间:2023-11-29 23:18:55 24 4
gpt4 key购买 nike

这是一个思维练习。我没有对这段代码做任何事情,目的是更好地理解闭包是如何工作的。

思考过程:

  1. 在全局范围内 x === 10。
  2. outer() 函数被调用。
  3. x === 20 在全局范围和本地范围。
  4. inner() 函数被调用。
  5. 表示'var x'的右侧。
  6. 在 x + 20 中,因为 x 没有在本地范围内定义,所以它搜索外部范围并找到 x === 20。
  7. 变量 x = 20 + 20。
  8. 变量 x === 40。
  9. 返回x。
  10. 结果 === 40。

然而,答案是20,这是为什么呢?

var x = 10;

function outer () {
x = 20;
function inner () {
var x = x + 20;
return x;
}
inner();
}

outer();

var result = x;

最佳答案

inner() 函数被调用时,首先发生的事情是 var x

这意味着 JavaScript 解释器首先创建一个名为 x 的变量,并为其分配 undefined

然后它运行赋值表达式 x + 20,它等同于 undefined + 20,即 NaN

您的变量 result 与您的 inner() 函数无关,因为您有一个局部变量(因为那个 var x)并且您忽略返回的结果。

换句话说,您的代码等同于:

var x = 10;

function outer () {
x = 20;
}

outer();

var result = x;

关于javascript - JS 闭包 - x 的值是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51509554/

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