读取立即调用的函数表达式

时间:2013-09-16 20:09:51

标签: javascript

我一直在使用这种模式来组织我的JavaScript中使用的常用方法,但却没有真正理解它。

(function(newSubNamespace) {
 newNamespace.someNewFunction = function(args){
    //do something
 }
}(window.appNamespace.newSubNamespace = 
  window.appNamespace.newSubNamespace || {},
  jQuery));

我知道这是将someNewFunction定义的函数添加到window.appNamespace.newSubNamespace并且window.appNamespace.newSubNamespace || {}创建newSubNamespace(如果它还不存在),但我无法弄清楚是什么,jQuery位。

此外,如果我不得不说出这个,它会延伸吗?

我一直在使用这种模式而没有完全理解它,并希望了解更多。

2 个答案:

答案 0 :(得分:3)

, jQuery在这种特殊情况下似乎没用(除非您使用arguments对象访问第二个参数),因为您的外部匿名函数不会采用第二个正式参数。

通常,执行此操作的代码可能类似于

(function(something, $) {
   ...
}(whatever, jQuery));

以便将jQuery分配到匿名函数内的正式参数$(这里,“IIFE”:立即调用函数表达式)。当其他库也可能尝试使用$标识符时,这用作在IIFE中为jQuery保留$的方法。

答案 1 :(得分:1)

我猜你从其他地方复制了这个,你错过了匿名函数的第二个参数。即它应该是

(function(newSubNamespace, $) {
...

您这样做是为了确保 $ 符号是jQuery而不是其他内容。