我正在处理一些其他人写的jquery,看起来像下面的代码,并想知道为什么美元符号应该传递给javascript updateTextareas函数。
它使用了2个参数:$,$ textareas。它似乎只用一个参数($ textareas)就可以正常工作。
我试图弄清楚为什么作者会将$作为下面updateTextareas函数中的第一个参数传递:
( function($)
{
// why would the first argument ($) need to be passed here?
function updateTextareas($, $textareas)
{
$textareas.each(function()
{
alert($(this).val());
});
}
// document ready
$(function()
{
updateTextareas($, $('textarea.bio') );
});
} )(jQuery);
答案 0 :(得分:2)
在功能定义方面:
function updateTextareas($, $textareas)
$
的值已在当前范围中定义(作为外部函数的参数传递),因此将其再次传递到此处是完全没用的,可以省略。
顺便说一下,当函数在(function($) { ... }(jQuery));
包装器之外定义时,它可能曾经是必要的。
答案 1 :(得分:1)
它使得像这个或其他插件的代码可以与可能已经使用美元符号的其他Javascript库一起使用。在这种情况下,如果没有灵活支持重新命名jQuery(基本上),你就会发生冲突。
当然,作者最初可能根本没有使用过$
而只是在任何地方使用jQuery
而且这也会绕过整个问题 - 但是当你使用$
时这是件好事可以是它的简短和简洁。
答案 2 :(得分:0)
这个想法是,这将允许你传递“façade”或其他像jQuery一样的函数。例如,这可用于单元测试。
但是,老实说,这有点开销,我不建议这样做。它实际上是无用的,并且有更简单的方法来实现单元测试。