【问题标题】:What does it (function($) {})(); mean? [duplicate]它是什么 (function($) {})();意思是? [复制]
【发布时间】:2014-10-06 14:01:32
【问题描述】:

(function($) {})(); 是什么意思?

【问题讨论】:

  • 它是一个内联函数
  • $ 参数的使用看起来是假的——也许它真的应该是jQuery(function ($) {..})(function ($) {..})(jQuery)。确保准确地写出问题。
  • (function($) {})(); 是一个自执行匿名函数,与这里的(function(){} )(); 相同,不同之处在于您将 $ (jquery) 作为参数传递给函数的第一个函数。此函数将在解析后立即调用。这已经在这里讨论过:stackoverflow.com/questions/19491650/…

标签: javascript


【解决方案1】:

它是一个匿名的内联函数,它会在定义后被调用。

【讨论】:

  • 基本正确,尽管人们可能喜欢一个用例,或者至少喜欢这种模式的名称 (IIFE),因此可以将这个答案放在上下文中。
【解决方案2】:

它是一个立即调用的函数表达式 (IIFE)。

这意味着花括号之间的代码将在解析后立即在闭包内执行。这意味着在函数执行完毕后,在函数体内用var 声明的任何变量都将从内存中丢弃。这是一种隔离代码和防止命名空间污染的方法。您还可以使用它来重命名特定范围的变量:

例如,考虑 jquery:

(function($){
  //inside the closure, jquery can be accessed using '$'
  $(...)
})(jquery);

(function(customJqueryName){
  //inside the closure, jquery can be accessed using 'customJqueryName'
  customJqueryName(...)
})(jquery);

查看关闭情况:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Closures
IIFE:http://benalman.com/news/2010/11/immediately-invoked-function-expression/

【讨论】:

    猜你喜欢
    • 2013-08-25
    • 2012-07-04
    • 2016-02-14
    • 2013-11-18
    • 1970-01-01
    • 1970-01-01
    • 2018-02-21
    • 1970-01-01
    • 2012-03-05
    相关资源
    最近更新 更多