调用javascript方法的两种方法之间有什么区别
我正在学习JavaScript并试图理解它。这对你来说可能很简单,但我确实需要解释。这是我的java脚本文件代码调用javascript方法的两种方法之间有什么区别,javascript,html,Javascript,Html,我正在学习JavaScript并试图理解它。这对你来说可能很简单,但我确实需要解释。这是我的java脚本文件代码 function divClick(){ alert("Hello World!!!"); } 所以如果我这样称呼它 $(document).ready(function(){ $("div").click(function(){ divClick(); });}); function divClick(){ return function(){ al
function divClick(){
alert("Hello World!!!");
}
所以如果我这样称呼它
$(document).ready(function(){
$("div").click(function(){
divClick();
});});
function divClick(){
return function(){
alert("Hello World!!!");
}
}
一切正常,只有当我点击div元素时,警报框才会出现。但如果我像这样访问它
$(document).ready(function(){
$("div").click(divClick());});
页面加载后,警报框将自动显示。我真的不明白,你能解释一下吗。如果有任何url,我很乐意学习。第二个url会立即调用
divClick()
,并将返回的内容作为.click()
回调处理程序传递
改用这个:
$("div").click(divClick);
这里,我们将一个函数引用作为事件处理程序。
< P>就像许多编程语言(Python、java、C++、C++等),当你有一个函数调用,比如foo(a, b, ...);
首先计算所有表达式a
、b
等,然后将其结果作为参数传递给foo
万一
$("div").click(function(){
divClick();
});
表达式是function(){divClick();}
,这是一个函数表达式。计算结果是一个函数(对象)。因此,函数被传递到。单击
就
$("div").click(divClick());
表达式是divClick()
,这是一个函数调用。这意味着执行函数divClick
,它返回的任何内容都将传递给。click
简化示例:
function a(arg) {
alert(arg);
}
function b() {
return 42;
}
a(b()); // alerts 42
这里首先执行b
,其返回值为42
。此值作为参数传递给a
,并可在函数中作为arg
访问
如果有任何网址,我会很高兴地学习它
这真的没什么特别的。函数调用是如何计算的。也许你会对作为参数传递的函数感到困惑。在JavaScript中,函数是一级公民,可以像任何其他值(数字、布尔值、字符串等)一样传递
关于函数的阅读材料:
当您注册一个事件时,在本例中,单击,输入是对事件发生时应调用的函数的引用。在第一种情况下,您定义的是匿名函数。但是,在第二种情况下,divClick()
不是引用,因此它计算并期望函数divClick
返回引用。在评估过程中,您的方法实际上会被调用,从而导致行为。补充了Felix Kling的答案
你可以改变
$(document).ready(function(){
$("div").click(divClick());
});
为了
通过这种方式,您传递的是一个名为“divClick”的函数对象,而不是返回值“divClick()”,在本例中为nothing
另一个肮脏的工作方式是改变函数
$(document).ready(function(){
$("div").click(function(){
divClick();
});});
function divClick(){
return function(){
alert("Hello World!!!");
}
}
非常感谢,你能给我推荐一些好书或网址让我学习吗?在再次分享代码之前,请先学习如何进行适当的缩进。很抱歉,下次我会处理的。谢谢指点out@zerkms:谢谢,我改正了。你说得完全正确,非常感谢你的详细解释。