我正在使用其他人编写的一些jquery,它们看起来像下面的代码,并且想知道为什么美元符号应该传递给javascript updateTextareas函数。
它使用了两个参数:$,$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);发布于 2013-04-23 01:05:51
其想法是,这将允许您传递一个“外观”或另一个类似于jQuery的函数。例如,这可以在单元测试中使用。
但是,老实说,这有点开销,我不建议这样做。它大部分都是无用的,而且有更简单的方法来实现单元测试的同样效果。
发布于 2013-04-23 01:13:10
在函数定义时:
function updateTextareas($, $textareas)$的值已经在当前作用域中定义(作为参数传递给外部函数),因此在这里再次传递它是完全无用的,可以省略。
顺便说一句,当函数在(function($) { ... }(jQuery));包装器外部定义时,它可能曾经是必需的。
发布于 2013-04-23 01:05:10
这样代码或其他插件就可以与可能已经使用美元符号的其他Javascript库一起工作。在这种情况下,如果没有灵活的jQuery重命名支持(基本上),就会发生冲突。
当然,作者本来可以根本不使用$,而只是到处使用jQuery,这也会回避整个问题--但尽可能使用$的好处是它简短而简洁。
https://stackoverflow.com/questions/16152647
复制相似问题