2

我正在使用一些其他人编写的类似于以下代码的 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);
4

3 回答 3

2

在函数定义点:

function updateTextareas($, $textareas)

的值$已经在当前作用域中定义(作为参数传递给外部函数),所以在这里再次传递它是完全没有用的,可以省略。

(function($) { ... }(jQuery));顺便说一句,当函数在包装器之外定义时,它可能曾经是必要的。

于 2013-04-22T17:13:09.563 回答
1

这样这样的代码或其他插件可以与其他可能已经使用美元符号的 Javascript 库一起使用。在这种情况下,如果没有对重命名 jQuery 的灵活支持(基本上),您会遇到冲突。

当然,作者本来可以根本不使用$,只是在jQuery任何地方使用,这也可以绕过整个问题 - 但尽可能使用$的好处是它简短而简洁。

于 2013-04-22T17:05:10.230 回答
0

这个想法是,这将允许你传递一个“外观”或另一个像 jQuery 一样工作的函数。例如,这可以用于单元测试。

但是,老实说,这有点开销,我不建议这样做。它基本上是无用的,并且有更简单的方法来实现单元测试。

于 2013-04-22T17:05:51.303 回答