【发布时间】:2020-05-08 18:45:08
【问题描述】:
我一直找不到合适的解释。
function subtract(x, y) {
setTimeout(function(x, y) {
document.write(x - y);
}, 1000);
}
subtract(1, 1);
这会将 NaN 写入文档,因为传递给 setTimeout 的 x 和 y 参数未定义。你会认为 x 和 y 应该是整数 1 并且它在减法函数的范围内。以下 sn-p 工作得非常好,并按预期写入整数 0:
function subtract(x, y) {
setTimeout(function() {
document.write(x - y);
}, 1000);
}
subtract(1, 1);
删除参数似乎可以解决问题。为什么?
【问题讨论】:
-
你是隐藏变量,也许这可能会有所帮助:eslint.org/docs/rules/no-shadow
-
只需将
x, y排除在setTimeout()回调函数之外。
标签: javascript settimeout