我很好奇,下面两个函数有什么区别吗?
在ready
时只有一个函数在匿名函数内传递,而另一个函数在ready
时传递一个实际的命名函数?
示例:
<p>Not loaded yet.</p>
第一种方法:
function newName() {
$( "p" ).text("The DOM is now loaded and can be manipulated.")
}
$(document).ready(function() {
newName()
});
第二种方法:
function newName() {
$( "p" ).text( "The DOM is now loaded and can be manipulated.")
}
$(document).ready(newName());
一个比另一个更正确吗?
答案 0 :(得分:2)
在
ready
时只有一个函数在匿名函数内传递,而另一个函数在ready
时传递一个实际的命名函数?
是和否。
我很好奇,这两者有什么不同吗?
第一个是传递一个在事件触发时执行的回调函数。当解释甚至火灾时here。
后者传递已解析的返回值(undefined
,因为newName
没有返回语句),这与第二个相同。它将返回值传递给ready
的原因是因为您调用函数立即(可能看似有效),然后传递返回值。要使它们功能等效,请执行:
$(document).ready(newName);
这将传递函数引用,并且不会调用它。另外,如前所述,调用ready(func(); func2();)
不是有效的语法。
答案 1 :(得分:1)
实际上
之间没有区别$(document).ready(function(){
newName();
});
和
$(document).ready(newName);
存在一个小的技术差异:在第一个代码段中,传递了一个名为newName
的匿名函数,在第二个代码段中,传递了命名函数newName
本身。
函数只是可调用的对象,可以通过它们的名称或包含该函数的变量的名称来引用。
请注意,$(document).ready(newName());
正在调用newName
- 立即 - 并将返回值传递给ready
。这只有在newName
返回另一个函数时才有意义,在这种情况下它不会。
标题还提到$(document).ready(newName){}
之类的内容。我假设这是一个错字,因为那不是有效的语法。
$(document).ready(newName(); otherName(); otherName1());
也不是有效的语法。