在阅读源代码时,我看到了一行
console.log(setTimeout("1"))

并且此代码返回一个随机数。
我不知道为什么。请帮帮我。
答案 0 :(得分:3)
根据MDN,
返回的timeoutID是一个非零的数值,用于标识通过调用setTimeout()创建的计时器;可以将此值传递给Window.clearTimeout()以取消超时。
因此,当你执行= setTimeout()
时,你没有获得已经传递的东西的价值,但它是系统生成的标识符。
setTimeout
在指定的延迟后在事件堆中注册事件。如果未提及延迟,则假定为0
,但请注意,setTimeout(notify, 0)
与notify()
不同。
同样setTimeout
期望函数作为第一个参数。当它接收到一个字符串时,它假定,您将函数调用作为字符串传递,编译器尝试使用eval
对其进行求值。因此,setTimeout("1")
将成为eval("1")
,这将返回"1"
,因此您不会收到错误。
function notify(){
console.log('ta-da!!!');
}
var a = 10;
setTimeout("notify()",0)
// sample for eval
console.log(setTimeout("a"))
// This should throw error as `b` is not declared
console.log(setTimeout("b"))