我正在尝试通过学习如何使用闭包来扩展我的 JavaScript 技能水平。在下面的代码中,我想我会看到 console.log 输出从 3 倒数到 0。相反,我得到 -1、-1、-1、-1。
我知道我正在处理范围界定问题,但仅此而已。少了什么东西?这应该如何正确写,为什么?
function closure_count_test (number)
{
for (var x = 0; x <= number; x += 1)
{
setTimeout(function() {console.log(number - x);}, x * 1000);
}
}
closure_count_test(3);