javascript - 两种调用javascript方法的方法有什么区别

标签 javascript html

我正在学习 JavaScript 并试图理解它。这对你来说可能很简单,但我确实需要解释。这是我的java脚本文件代码。

function divClick(){
alert("Hello World!!!");
}

所以如果我这样调用它

$(document).ready(function(){
$("div").click(function(){
    divClick();
});});

一切正常,仅当我单击 div 元素时才会出现警报框。但如果我像

一样访问它
$(document).ready(function(){
$("div").click(divClick());});

页面加载后,警报框就会自动出现。我真的无法理解,请您解释一下。如果有任何网址我很乐意学习。

最佳答案

就像许多编程语言(Python、Java、C、C++ 等)一样,当您有类似的函数调用时

foo(a, b, ...);

首先计算所有表达式ab等,然后将它们的结果作为参数传递给foo

如果出现

$("div").click(function(){
    divClick();
});

表达式为function(){ divClick(); },这是一个函数表达式。评估它的结果是一个函数(对象)。因此,函数被传递给 .click

如果是

$("div").click(divClick());

表达式是divClick(),这是一个函数调用。这意味着函数 divClick 被执行,并且它返回的任何内容都会传递给 .click

<小时/>

简化示例:

function a(arg) {
    alert(arg);
}

function b() {
    return 42;
}

a(b()); // alerts 42

这里先执行b,它的返回值为42。该值作为参数传递给 a 并在函数中作为 arg 访问。

<小时/>

If there is any url I would be happy to learn it.

确实没有什么特别的。这就是函数调用的评估方式。也许您对作为参数传递的函数感到困惑。在 JavaScript 中,函数是一等公民,可以像任何其他值(数字、 bool 值、字符串……)一样传递。

阅读有关函数的 Material :

关于javascript - 两种调用javascript方法的方法有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16289898/

相关文章:

javascript正则表达式分割不跨浏览器

html - Bootstrap nav-fixed-top 在页面缩小时覆盖文本

javascript - 可以在变量中分配 URL 地址并在 HTML 中使用。使用 JavaScript?

html - GWT + CSS 样式重载

Javascript 在循环内递增

javascript - 没有定义类的对象实例

javascript - 自动化 Web of Knowledge H-index 输出

html - 能够始终如一地 float td 元素?

javascript - JQuery 隐藏所有元素

javascript - Cordova/Javascript 录音