作为学前端的小白,刚开始学到函数作为参数传递时,简直一脸的懵逼,为什么有时候要加括号,有时候又不用,特别是遇到setInterval的时候。
下面是参考网上的一些答案,做的一些总结【要是有什么错误不合理的地方,烦请指正哦】:
1、首先要理解一点,函数是一种叫做function引用类型的实例,因此函数是一个对象。对象是保存在内存中的,函数名则是指向这个对象的指针,是指针。
2、所以基于这一点,将函数名赋值给一个变量,相当于变量存贮的是函数这个对象的指针。而如果函数名后面加上圆括号就表示立即调用(执行)这个函数里面的代码(花括号部分的代码)。下面的例子:
function fun(){
return 5
}
var a=fun //a是fun函数;(不加括号可认为是查看函数完整信息,即查看整个函数体,返回值即整个函数体,不加括号传参相当于传入函数整体)
var b=fun()