gpt4 book ai didi

javascript - 函数调用中的 "()"是什么意思?

转载 作者:行者123 更新时间:2023-12-03 12:24:33 25 4
gpt4 key购买 nike

现在,我通常用 () 调用一个函数(不需要参数)。像这样:

myFunction(); //there's empty parens

除了在我可以逃脱的 jQuery 调用中:
$('#foo').bind('click', myFunction); //no parens

美好的。但是最近看到这条评论 here关于 SO:

“考虑使用 setTimeout(monitor, 100); 而不是 setTimeout('monitor()', 100);。Eval 是邪恶的 :)”

哎呀!我们真的是 eval() - 在这里输入一个字符串?我想我并不真正理解“调用”函数的意义和含义。调用和引用函数的真正规则是什么?

最佳答案

在 JavaScript 中,函数是一流的对象。这意味着您可以将函数作为参数传递给函数,或者通常将它们视为变量。

假设我们正在讨论一个函数 hello ,

function hello() {
alert('yo');
}

当我们简单地写
hello

我们指的是不执行其内容的函数。但是当我们添加括号 ()在函数名之后,
hello()

然后我们实际上调用了会在屏幕上提示“yo”的函数。
bind jQuery 中的方法接受事件类型(字符串)和函数作为其参数。在您的示例中,您将类型 - “click”和实际函数作为参数传递。

你看过《盗梦空间》吗?考虑这个人为的例子,它可能会使事情更清楚。由于函数是 JavaScript 中的一等对象,我们可以在函数内部传递和返回函数。所以让我们创建一个函数,它在调用时返回一个函数,并且返回的函数在调用时也返回另一个函数。
function reality() {
return function() {
return function() {
alert('in a Limbo');
}
};
}

这里 reality是一个函数, reality()是一个函数, reality()()也是一个函数。然而 reality()()()不是函数,而只是 undefined因为我们没有从最里面的函数返回一个函数(我们没有返回任何东西)。

所以对于 reality函数示例,您可以将以下任何内容传递给 jQuery 的绑定(bind)。
$('#foo').bind('click', reality);
$('#foo').bind('click', reality());
$('#foo').bind('click', reality()());

关于javascript - 函数调用中的 "()"是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3641330/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com