为了账号安全,请及时绑定邮箱和手机立即绑定

关于js function(){}

关于js function(){}

蛊毒传说 2019-03-14 18:15:30
一直没有想明白为什么 setInterval(function(){},1000) //setInterval不停的调用里面的函数,但是里面的function(){}没有定义命名如何调用?SetInterval里面的function(){}是否等于(function(){})() //可能我表达得不清楚,只是一直有这个疑惑
查看完整描述

6 回答

?
慕的地8271018

TA贡献1796条经验 获得超4个赞

只是一种简写,不用理会为什么会这样,解释不清的,管用就行;


var fn=function(){};

setInterval(fn,1000)

你扔个function变量进去也行的


查看完整回答
反对 回复 2019-03-19
?
白衣染霜花

TA贡献1796条经验 获得超10个赞

setInterval拿到了function(){}的引用。

你手动调用需要名字,所以没有名字你不能调用。


function cb (fn) {

    fn()

}

cb(function(){console.log(1)})

你传入的function (){console.log(1)}有没有名字?cb函数能不能调用它?


fn和fn()的区别是,后者是前者的返回值。


查看完整回答
反对 回复 2019-03-19
?
月关宝盒

TA贡献1772条经验 获得超5个赞

function(){}是参数,内部只需类似cb()就可以了


查看完整回答
反对 回复 2019-03-19
?
不负相思意

TA贡献1777条经验 获得超10个赞

setInterval第一个参数是函数类型,正常情况应该是

setInterval(function(){},1000)

这么用的,为什么setInterval(fn,1000)可以,因为fn是一个函数的引用,调用fn的时候就相当于调用函数

SetInterval里面的function(){}不等于(function(){})()(function(){})()是一个立即执行的函数,返回的是一个运行结果,里面返回类型不是函数的话会报错


查看完整回答
反对 回复 2019-03-19
?
精慕HU

TA贡献1845条经验 获得超8个赞

let intervalID = window.setInterval(func, delay[, param1, param2, ...]);

所以像这样的调用 setInterval(function(){},1000),里面的形参 func,就获取到了function(){}的引用,在函数内部随意调用,
所谓的没法调用,也只是指在 setInterval 函数外部,

类似这样(function(){})()
共同点是: 都是匿名函数,没法使用函数名递归的调用自己,
不同点是: (function(){})()也没有赋值给 其他变量,只能被调用一次,setInterval里面利用 func变量,可以在函数内部调用多次。


查看完整回答
反对 回复 2019-03-19
?
芜湖不芜

TA贡献1796条经验 获得超7个赞

js里函数是以函数对象的形式存在的,表面上看不到函数的名称,但是计时器栈里保存了方法所在的位置,到点儿了拿出来用就行了


查看完整回答
反对 回复 2019-03-19
  • 6 回答
  • 0 关注
  • 629 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信