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

Javascript 读取立即调用的函数表达式,javascript,Javascript,我一直在使用这种模式来组织JavaScript中使用的常用方法,但没有真正理解它 (function(newSubNamespace) { newNamespace.someNewFunction = function(args){ //do something } }(window.appNamespace.newSubNamespace = window.appNamespace.newSubNamespace || {}, jQuery)); 我知道这是将定义为so

我一直在使用这种模式来组织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
位的作用

此外,如果我必须命名这个,它会只是扩展吗


我一直在使用这个模式,但没有完全理解它,我想知道更多。

在这个特殊情况下,jQuery似乎是无用的(除非您使用
arguments
对象访问第二个参数),因为您的外部匿名函数不接受第二个形式参数

通常,执行此操作的代码可能如下所示

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

因此jQuery被分配到匿名函数(这里是一个“IIFE”:立即调用的函数表达式)中的形式参数
$
。当其他库也可能尝试使用
$
标识符时,这是在您的IIFE中为jQuery保留
$
的一种方法。

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

通常,执行此操作的代码可能如下所示

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

因此jQuery被分配到匿名函数(这里是一个“IIFE”:立即调用的函数表达式)中的形式参数
$
。当其他库也可能尝试使用
$
标识符时,这是一种在您的iLife中为jQuery保留
$
的方法。

我猜您是从其他地方复制的,并且错过了匿名函数的第二个参数。也就是说,它应该是

(function(newSubNamespace, $) {
...

您这样做只是为了确保$sign是jQuery,而不是其他任何东西。

我猜您是从其他地方复制的,您错过了匿名函数的第二个参数。也就是说,它应该是

(function(newSubNamespace, $) {
...

您这样做只是为了确保$sign是jQuery,而不是其他任何东西。

它只是将jQuery作为第二个参数传递给IIFE!它只是将jQuery作为第二个参数传递给IIFE!IIFE=立即调用的函数表达式:使用
(函数(参数){body})(参数)同时定义和调用函数“完全无用”取决于参数是否在IIFE中使用,还有其他方法获取函数参数!现在完全有道理了。我不知道为什么我的大脑看不到它只是功能(arg1,arg2)!谢谢IIFE=立即调用的函数表达式:使用
(函数(参数){body})(参数)同时定义和调用函数“完全无用”取决于参数是否在IIFE中使用,还有其他方法获取函数参数!现在完全有道理了。我不知道为什么我的大脑看不到它只是功能(arg1,arg2)!谢谢