为什么这段代码输出连续的数字?

时间:2016-09-11 20:12:29

标签: javascript

我试图发布一个基本的JS技巧问题,而且它显然也在欺骗我:)

在你的控制台中运行:

x = (w) => w.length;
setTimeout(console.log(x), 0);

每次运行setTimeout(console.log(x), 0);时,您的数字都会越来越多。这是为什么?不应该将w参数引用到window对象吗?

1 个答案:

答案 0 :(得分:10)

https://dotnetfiddle.net/aXQ99x返回一个值。您正在查看计时器ID,它是setTimeout的返回值,可以用作setTimout调用的参数。

  

返回的timeoutID是一个用于标识的数字非零值   通过调用setTimeout()创建的计时器;这个值可以   传递给Window.clearTimeout()以取消超时。 [0]

[0] clearTimeout

w参数不会引用窗口对象。 console.log返回undefined,因此永远不会调用你的函数。