一直没有想明白为什么 setInterval(function(){},1000) //setInterval不停的调用里面的函数,但是里面的function(){}没有定义命名如何调用?
SetInterval里面的function(){}是否等于(function(){})() //可能我表达得不清楚,只是一直有这个疑惑
一直没有想明白为什么 setInterval(function(){},1000) //setInterval不停的调用里面的函数,但是里面的function(){}没有定义命名如何调用?
SetInterval里面的function(){}是否等于(function(){})() //可能我表达得不清楚,只是一直有这个疑惑
setInterval拿到了function(){}的引用。
你手动调用需要名字,所以没有名字你不能调用。
function cb (fn) {
fn()
}
cb(function(){console.log(1)})
你传入的function (){console.log(1)}
有没有名字?cb函数能不能调用它?
fn和fn()的区别是,后者是前者的返回值。
setInterval第一个参数是函数类型,正常情况应该是
setInterval(function(){},1000)
这么用的,为什么setInterval(fn,1000)可以,因为fn是一个函数的引用,调用fn的时候就相当于调用函数
SetInterval里面的function(){}
不等于(function(){})()
,(function(){})()
是一个立即执行的函数,返回的是一个运行结果,里面返回类型不是函数的话会报错
let intervalID = window.setInterval(func, delay[, param1, param2, ...]);
所以像这样的调用 setInterval(function(){},1000)
,里面的形参 func,就获取到了function(){}的引用,在函数内部随意调用,
所谓的没法调用,也只是指在 setInterval 函数外部,
类似这样(function(){})()
,
共同点是: 都是匿名函数,没法使用函数名递归的调用自己,
不同点是: (function(){})()
也没有赋值给 其他变量,只能被调用一次,setInterval
里面利用 func变量,可以在函数内部调用多次。
10 回答11.3k 阅读
5 回答4.9k 阅读✓ 已解决
4 回答3.2k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
3 回答2.4k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
只是一种简写,不用理会为什么会这样,解释不清的,管用就行;
你扔个function变量进去也行的