Javascript 传递回调与传递函数之间的区别
我很好奇,下面的两个函数有什么不同吗 当Javascript 传递回调与传递函数之间的区别,javascript,jquery,Javascript,Jquery,我很好奇,下面的两个函数有什么不同吗 当ready时,一个正在匿名函数中传递函数,而当ready时,另一个正在传递实际命名函数 例如: <p>Not loaded yet.</p> 第二种方法: function newName() { $( "p" ).text( "The DOM is now loaded and can be manipulated.") } $(document).ready(newName()); 一个比另一个更正确吗 当ready时
ready
时,一个正在匿名函数中传递函数,而当ready
时,另一个正在传递实际命名函数
例如:
<p>Not loaded yet.</p>
第二种方法:
function newName() {
$( "p" ).text( "The DOM is now loaded and can be manipulated.")
}
$(document).ready(newName());
一个比另一个更正确吗
当ready
时,一个正在匿名函数中传递函数,而当ready
时,另一个正在传递实际命名函数
是和否
我很好奇,这两者有什么区别吗
第一个是传递一个回调函数,该函数在事件触发时执行。当这一点得到解释时,甚至会起火
后者传递已解析的返回值(由于newName
没有返回语句,因此undefined
与第二个返回值不同)。它将返回值传递给ready
的原因是,您立即调用函数(这看起来可能有效),然后函数传递返回值。要使它们在功能上等效,请执行以下操作:
$(document).ready(newName);
这将传递函数引用,而不会调用它。另外,如前所述,调用asready(func();func2();)
的语法无效
当ready
时,一个正在匿名函数中传递函数,而当ready
时,另一个正在传递实际命名函数
是和否
我很好奇,这两者有什么区别吗
第一个是传递一个回调函数,该函数在事件触发时执行。当这一点得到解释时,甚至会起火
后者传递已解析的返回值(由于newName
没有返回语句,因此undefined
与第二个返回值不同)。它将返回值传递给ready
的原因是,您立即调用函数(这看起来可能有效),然后函数传递返回值。要使它们在功能上等效,请执行以下操作:
$(document).ready(newName);
这将传递函数引用,而不会调用它。另外,如前所述,调用as
ready(func();func2();)
是无效的语法。有效地说
$(document).ready(function(){
newName();
});
及
有一个小的技术区别:在第一个代码段中,传递了一个调用newName
的匿名函数,在第二个代码段中,传递了命名函数newName
本身
函数只是可调用的对象,可以通过它们的名称或包含函数的变量的名称来引用
请注意,$(document).ready(newName())代码>正在调用newName
— 立即 — 并将返回值传递给ready
。这只有在newName
返回另一个函数时才有意义,而在本例中,它不会返回另一个函数
标题还提到了类似于$(document).ready(newName){}
。我假设这是一个输入错误,因为这不是有效的语法
$(document).ready(newName();otherName();otherName1())代码>也不是有效的语法。实际上,它们之间没有区别
$(document).ready(function(){
newName();
});
及
有一个小的技术区别:在第一个代码段中,传递了一个调用newName
的匿名函数,在第二个代码段中,传递了命名函数newName
本身
函数只是可调用的对象,可以通过它们的名称或包含函数的变量的名称来引用
请注意,$(document).ready(newName())代码>正在调用newName
— 立即 — 并将返回值传递给ready
。这只有在newName
返回另一个函数时才有意义,而在本例中,它不会返回另一个函数
标题还提到了类似于$(document).ready(newName){}
。我假设这是一个输入错误,因为这不是有效的语法
$(document).ready(newName();otherName();otherName1())代码>也是无效语法。谢谢!他们问,因为前者不起作用,但后者起作用<代码>$(文档).ready(newName();otherName();otherName1())代码>是一个工作异常的代码。@JoshChristensen:我不知道你在哪里看到的,但这是一个语法错误。您可能想要$(document).ready(函数(){newName();otherName();otherName1();})代码>@JoshChristensen在第一次传递回调时,该回调在事件触发器上执行。第二,您首先调用函数(因此似乎可以工作),然后将函数的返回值传递给ready
,这是没有意义的。我知道这不是有效的语法,但有人解释说它有效。因为语法不正确,所以我不知道怎么做。@JoshChristensen这不是有效的语法,第一个例子应该可以。不知道他们在告诉你什么,但那是不正确的谢谢!他们问,因为前者不起作用,但后者起作用<代码>$(文档).ready(newName();otherName();otherName1())代码>是一个工作异常的代码。@JoshChristensen:我不知道你在哪里看到的,但这是一个语法错误。您可能想要$(document).ready(函数(){newName();otherName();otherName1();})代码>@JoshChristensen在第一次传递回调时,该回调在事件触发器上执行。第二,您首先调用函数(因此似乎可以工作),然后将函数的返回值传递给ready
,这是没有意义的。我知道这不是有效的语法,但有人解释说它有效。因为语法不正确,所以我不知道怎么做。@JoshChristensen这不是有效的语法,第一个例子应该可以。不确定他们在告诉你什么,但这只是不正确的$(document).ready(newName())代码>新代码