6 回答
TA贡献1796条经验 获得超4个赞
只是一种简写,不用理会为什么会这样,解释不清的,管用就行;
var fn=function(){};
setInterval(fn,1000)
你扔个function变量进去也行的
TA贡献1796条经验 获得超10个赞
setInterval拿到了function(){}的引用。
你手动调用需要名字,所以没有名字你不能调用。
function cb (fn) {
fn()
}
cb(function(){console.log(1)})
你传入的function (){console.log(1)}有没有名字?cb函数能不能调用它?
fn和fn()的区别是,后者是前者的返回值。
TA贡献1777条经验 获得超10个赞
setInterval第一个参数是函数类型,正常情况应该是
setInterval(function(){},1000)
这么用的,为什么setInterval(fn,1000)可以,因为fn是一个函数的引用,调用fn的时候就相当于调用函数
SetInterval里面的function(){}
不等于(function(){})()
,(function(){})()
是一个立即执行的函数,返回的是一个运行结果,里面返回类型不是函数的话会报错
TA贡献1845条经验 获得超8个赞
let intervalID = window.setInterval(func, delay[, param1, param2, ...]);
所以像这样的调用 setInterval(function(){},1000)
,里面的形参 func,就获取到了function(){}的引用,在函数内部随意调用,
所谓的没法调用,也只是指在 setInterval 函数外部,
类似这样(function(){})()
,
共同点是: 都是匿名函数,没法使用函数名递归的调用自己,
不同点是: (function(){})()
也没有赋值给 其他变量,只能被调用一次,setInterval
里面利用 func变量,可以在函数内部调用多次。
添加回答
举报