我正在学习 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, ...);
首先计算所有表达式a
、b
等,然后将它们的结果作为参数传递给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/