【问题标题】:what difference does the `$` at the beginning of anonymous function? [duplicate]匿名函数开头的`$`有什么区别? [复制]
【发布时间】:2012-10-05 01:51:22
【问题描述】:

可能重复:
What is the meaning of “$” sign in javascript

匿名函数开头的$有什么区别?

这个例子:

(function() {
  ...
})();

对比这个:

$(function() {
  ...
})();

【问题讨论】:

    标签: javascript jquery function


    【解决方案1】:
    (function() {})();
    

    上面一行是创建一个匿名函数,然后立即执行它

    $(function() {})();
    

    假设您已经加载了 jQuery,上面的行会导致错误。这部分 $(function(){}) 将一个匿名函数传递给运行的 jQuery。 jQuery 会返回一个 Document 对象给你。因为您有结束括号 (),所以 Javascript 将尝试将 Document 对象作为函数执行。因为 Document 对象不是函数,所以会引发 TypeError 异常。

    【讨论】:

      【解决方案2】:

      取自 jQuery 网站:

      许多 JavaScript 库使用 $ 作为函数或变量名,就像 jQuery 一样。在 jQuery 的例子中,$ 只是 jQuery 的别名,所以所有功能都可以在不使用 $ 的情况下使用。如果我们需要在 jQuery 旁边使用另一个 JavaScript 库,我们可以通过调用 $.noConflict() 将 $ 的控制权返回给另一个库:

      您可以阅读所有相关信息here

      这在之前的 thisthis stackoverflow 问题中也有介绍!

      【讨论】:

        【解决方案3】:

        像所有其他答案一样

            $(function(){
                  ...
              });
        

        真的只是

            jQuery(function(){
        
             });
        

        并且第二个将工作相同,这与您的示例中的其他类型的函数之间的区别在于,第一个必须从某个地方调用,其中作为 jQuery 版本 - 如果 jQuery 以 HTML 加载它文档准备好后会自动运行。

        【讨论】:

        • 注意 $() 也是 Prototype.js 中的一个函数。不要仅仅假设 jQuery,因为 RubyOnRails(默认使用原型)也同样受欢迎。
        【解决方案4】:

        您的第一个示例是一个自执行函数,它在定义后立即开始执行,而第二个示例在文档准备好被操作时由 jQuery 执行。

        为了更好地理解第一个模式为什么有用,您可以参考this SO answer

        您还可以在.ready() function 的文档中阅读有关将函数传递给 jQuery 的更多信息。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2017-04-04
          • 2021-12-12
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-02-01
          • 2011-10-15
          相关资源
          最近更新 更多