gpt4 book ai didi

javascript - 访问传递给回调的变量

转载 作者:行者123 更新时间:2023-11-28 19:48:50 25 4
gpt4 key购买 nike

谁能解释为什么以下不起作用?watchLog() 中的 setTimeout 回调将输出 undefined。

function initWatchers() {
if (config.watchLogs.length >= 1) {
config.watchLogs.forEach(function(path) {
watchLog(path);
});
}
}

function watchLog(path) {
setTimeout(function(path) {
console.log(path)
}, 1000);
}

最佳答案

因为setTimeout,在调用回调函数时,并没有向函数中传递任何参数。因此function (path)中的参数path没有获得任何值并且是undefined。此外,它还会隐藏外部作用域中的 path 变量,并替换它(用 undefined)。你实际上想要这个:

function watchLog(path) {
setTimeout(function () {
// no shadowing arg ^^
console.log(path)
}, 1000);
}

关于javascript - 访问传递给回调的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23848217/

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