Jquery 将美元符号($)传递给函数

Jquery 将美元符号($)传递给函数,jquery,Jquery,我正在使用其他人编写的类似于以下代码的jquery,我想知道为什么应该将美元符号传递给javascript updateTextareas函数 它使用两个参数:$,$textareas。似乎只有一个参数($textareas)就可以正常工作 我试图弄明白为什么作者会在下面的updateTextareas函数中传入$作为第一个参数: ( function($) { // why would the first argument ($) need to be passed here?

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

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


当然,作者本来可以根本不用
$
,而只是到处使用
jQuery
,这也可以回避整个问题——但如果可以的话,使用
$
的好处是它又短又简洁。

这个想法是这样可以让你通过一个“门面”或者另一个类似jQuery的函数。例如,这可以用于单元测试


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

在函数定义方面:

function updateTextareas($, $textareas)
$
的值已在当前范围中定义(作为参数传递给外部函数),因此再次在此处传递它完全没有用,可以忽略


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

它只允许将jQuery作为
$
使用,而不会与我发现的其他可能的lib冲突。但是,正如下面的答案所述,在新的jQuery中,它是非常不必要的。也可以看人。。他问的是
$
函数updateTextareas($,$textareas)
@KaloyanIvanov我们知道了,答案还是一样的。它只是将jquery作为$传递,没有冲突。但是由于许多原因,这是不推荐的。@SpYk3HH但是当
$
已经定义并可访问时,将
$
传递给函数有什么意义呢?对此不确定。他已经将jQuery作为$传递到IIFE中,因此没有名称冲突的风险。我认为OP对于代码作者在没有必要时将
$
作为参数传递给
updateTextareas()
感到困惑<代码>$可以直接使用,因为使用
(函数($){})(jQuery)已经避免了任何可能的命名冲突