您的位置:首页 > Web前端 > JavaScript

JavaScript 函数调用时带括号和不带括号的区别

2016-06-26 08:17 387 查看
function fun() {
return 1;
}
var a = fun;
var b = fun();


JavaScript中我们把下面的代码叫做函数:

function fun() {
return 1;
}


函数是一种叫做function引用类型的实例,因此函数是一个对象。对象是保存在内存中的,函数名则是指向这个对象的指针。

var a = fun 表示把函数名fun这个指针拷贝一份给变量a,但是这不是指函数本身被复制了一份。

即:a是fun函数,b是1

如果函数名后面加上圆括号就表示立即调用(执行)这个函数里面的代码(花括号部分的代码)。

不加括号的,都是把函数名称作为函数的指针,一个函数的名称就是这个函数的指针,此时不是得到函数的结果,因为不会运行函数体代码。它只是传递了函数体所在的地址位置,在需要的时候好找到函数体去执行。

例如:

window.onload=init;


init函数并不会在这行代码时就执行,浏览器加载文档时这句话会被加载,会被告知文档加载完要执行哪个函数,但实际上没有当时就执行,等到整个文档加载完成之后才会通过init这个指针去执行init()。

小注:本文部分内容参考:

https://www.zhihu.com/question/31044040

http://blog.csdn.net/yyx19941129/article/details/49642515

作者:jiankunking 出处:http://blog.csdn.net/jiankunking
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息