gpt4 book ai didi

javascript - 为什么我利用闭包从两个看起来完全不同的函数中得到两个不同的结果?

转载 作者:行者123 更新时间:2023-11-30 16:24:08 25 4
gpt4 key购买 nike

我已将数字 0 分配给函数外部的变量。我使用这个变量来利用闭包,因为我还创建了一个简单的函数,它返回递增的变量,目的只是为了跟踪我调用该函数的次数。我调用了该函数 5 次,最后将调用的函数传递给警报函数。令人困惑的是,如果我递增变量然后返回变量,我得到的警报消息是“6”而不是“5”,这是我调用函数的次数但是,如果我递增变量并返回它同时,这意味着变量递增是返回语句的一部分,我在警报消息中调用函数的次数是正确的。为什么我得到不同的结果?我用作计数器的函数外部的变量被分配了数字 0。创建了全局执行上下文并正确地保存了这个变量?除此之外,我的 5 次调用创建了 5 个执行上下文,每次,新的递增变量都存在并保留在内存中,以供下一次递增调用使用。 “6”从何而来?这是我的代码,它生成 6 作为函数被调用的次数:

var i = 0; 

function add() {
i++;
return i;
}

add();
add();
add();
add();
add();

alert(add());

只需这样做:

  function add() {
return i++;
}

我收到了正确的提醒号码。

最佳答案

第一种情况是递增后返回值,第二种情况是递增前返回值

尝试 alert ( i ); 而不是 alert( add() ); 你会得到相同的值

关于javascript - 为什么我利用闭包从两个看起来完全不同的函数中得到两个不同的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34349637/

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