这样写是没问题的:
var num = 3
result = window.setInterval(function(i = num) {
console.log(i)
}, 1000)
这样写在 FireFox 中 setInterval 只执行了一次:
var num = 3
var printText = function(i = 4) {
console.log(i)
}
result = window.setInterval(printText(num), 1000)
1
yyfearth 2016-01-25 12:12:38 +08:00 1
这不是很明显么?
result = window.setInterval(printText(num), 1000) 你直接调用了 printText 一次 而不是让 setInterval 去调用 result = window.setInterval(printText, 1000) 这样才对啊 |
2
plqws 2016-01-25 12:18:14 +08:00 1
如果想要传参进去可以弄个闭包:
var num = 3 var printText = function(i = 4) { return function() { console.log(i) } } result = window.setInterval(printText(num), 1000) |
3
yimity 2016-01-25 12:20:36 +08:00 1
如果你非要这么调用,那么就
result = window.setInterval(function(){printText(num)}, 1000) |
4
iugo OP 基本常识, 以前一直忽略...
https://segmentfault.com/q/1010000000732577 |
5
xieranmaya 2016-01-29 10:22:41 +08:00
第一个参数是函数,不是函数的返回值。。。当然如果函数的返回值也是一个函数是没问题的
你第二种写法`setInterval(print(num),300)`相当于把 print(num)的返回值传给了 setInterval 。。。 |