调用JS函数,有时候会在函数名的后面加括号,有的时候却不加,这是为什么呢?
凡是要让函数执行函数体内的代码,都必须加括号。此时,函数()实际上等于函数的返回值。当然,有些没有返回值,但已经执行了函数体内的代码,因此,我们可以这样认为,只要加括号的,就代表将会执行函数体代码。
而不加括号的,都是把函数名称作为函数的指针,用于传参,此时不是得到函数的结果,因为不会运行函数体代码。它只是传递了函数体所在的地址位置,在需要的时候好找到函数体去执行。
下面我们看例子:
function GetMsg()
{
var ReMsg="大众计算机学习网";
alert(ReMsg);
}
function Test()
{
var TestMsg=GetMsg;
}
<div onclick="GetMsg()">内容一</div>
<div onclick="Test()">内容二</div>
当我们点击内容一的时候,执行GetMsg()函数内代码,因此会弹出对话框提示。
当我们点击内容二的时候,执行Test()函数内的代码,该函数内的代码是:
var TestMsg=GetMsg; //该函数的含义是:告诉TestMsg变量,函数GetMsg的位置,但是并不会调用并执行GetMsg函数内的代码,因此不会弹出对话框提示。
反过来,如果我们把上面这一句变为:var TestMsg=GetMsg(); 那么,就会弹出提示对话框了。
总结:调用函数的时候,如果带括号,就一定会执行该函数体内的代码;如果不带括号,则函数体内的代码不会被执行。