gpt4 book ai didi

javascript - 匿名函数和参数

转载 作者:行者123 更新时间:2023-11-30 08:06:38 27 4
gpt4 key购买 nike

function foo() {
var bar = 'no'
setInterval(function() { console.log(bar); }, 1000);
}

当我执行这段代码时,我得到了以下输出:no,所以输出是正确的。但是当我执行下一段代码时,当我将函数 bar 作为参数传递给那个匿名函数时,我不知道为什么输出是 undefined

function foo() {
var bar = 'no'
setInterval(function(bar) { console.log(bar); }, 1000);
}

如果我将变量作为参数传递,为什么未定义?如果在匿名函数中还有一个变量调用 bar,我知道该变量将被内部函数值重写,但我无法理解这种行为

最佳答案

在您的第一个示例中,您创建了一个闭包——您创建的函数链接到 bar 变量。它不会作为参数传递给函数。当 setInterval 稍后在不提供任何参数的情况下调用该函数时,它会按预期工作,因为该函数已关闭 bar 变量。

在您的第二个示例中,您没有将变量作为参数传递。您描述了一个函数,该函数接受一个参数,并且不关闭任何内容。然后 setInterval 以相同的方式调用该函数,不提供任何参数。如果在 javascript 中没有提供参数,它将变为 undefined

(您可以使用任意数量的参数调用 js 中的函数,无论函数声明时使用的参数是什么)。

更多关于闭包的阅读:How do JavaScript closures work?

关于javascript - 匿名函数和参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17132742/

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