javascript:functionName()和functionName有什么区别?

时间:2011-05-17 21:16:40

标签: javascript

我注意到你可以引用带或不带括号的函数。为什么?,有什么区别?

稍微一点,我注意到这有效: window.onload = functionName;

然而,这不是: window.onload = functionName();

有人可以解释为什么顶行代码可以工作而底部不行吗?

5 个答案:

答案 0 :(得分:9)

()版本未引用该功能。它调用函数并引用其返回值。

鉴于此功能:

function functionName() {
    return "I'm a function";
}

这引用了函数:

 // window.onload will reference the function, and invoked it when the page loads
window.onload = functionName;

...但是这引用了返回的字符串,这对window.onload

非常有用
 // the function is invoked immediately, so now window.onload references the
 //    string "I'm a function" that was returned
window.onload = functionName();

答案 1 :(得分:2)

编写func()调用函数并计算其值。

func只是评估函数本身,而不是调用它 (就像写myVar评估其值)

答案 2 :(得分:1)

在JavaScript中,函数是first class members,这意味着它们可以像语言中的其他数据类型一样对待。例如,您可以将函数赋值给变量,将其作为参数传递,从函数返回等。

鉴于此,functionName仅引用函数对象,而functionName()调用functionName引用的函数。


这分配了functionName引用的函数(它甚至不必是实际的函数名,它可能是分配给函数的变量 - 它是一个别名!例如, var functionName = myOtherFunction; - 这会为myOtherFunction

创建别名
window.onload = functionName;

虽然这会调用functionName引用的函数并分配它的结果

window.onload = functionName();

答案 3 :(得分:0)

functionName()调用该函数,然后在那里。另一方面,x = functionName将函数'functionName'赋给x。从那时起,调用x()类似于调用functionName()。对于window.onload,您的浏览器将在页面加载时调用window.onload()。

答案 4 :(得分:0)

functionName是保持对函数的引用的变量的名称。 functionName()是对该变量中函数的调用。