这没什么好讲的。先放结果,下面这几种都是可以使用的。
setInterval('nn(5)', 10)
setInterval(nn.bind(window,5), 10)
setInterval(function {nn(5)}, 10)
接下来看问题:
- setInterval 方法的定义是什么?
传入一个 function ,然后每隔一定时间调用一次 nn
和 nn(5)
有什么区别?
nn
是一个变量,就把变量代表的内容输出一下,返回的是一个function
nn(5)
是执行了一个方法,然后把return出来的内容输出一下,返回的是一个undefined
好了,收敛一下。通过上面的内容我们知道了,setInterval 要的是一个 function,然后定时执行。那么你 nn(5)
的时候其实就已经执行了,然后 setInterval 真正接收到的是 undefined。所以出现了只执行了一次,setInterval 一直在执行寂寞。
你可以试一下下面这个例子
nn = function(count){
console.log('outer', count)
return function(){
console.log('inner', count)
}
}
setInterval(nn(5), 10)
setInterval(nn, 10)
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…