Javascript 这段JS代码是怎么回事?

Javascript 这段JS代码是怎么回事?,javascript,angularjs,Javascript,Angularjs,我正在看Angular JS教程,它一直在使用这个代码片段的变体,但没有解释它 (function(param, undefined){ //Normal function definition in here ... }(bar.foo = bar.foo || {})); 所以我得到的最多的就是这个。我认识到下面的代码是一个自动执行函数,用于封装javascript的一些部分,以避免范围污染 (function(param, undefined){ //Normal funct

我正在看Angular JS教程,它一直在使用这个代码片段的变体,但没有解释它

(function(param, undefined){
  //Normal function definition in here
  ...
}(bar.foo = bar.foo || {}));
所以我得到的最多的就是这个。我认识到下面的代码是一个自动执行函数,用于封装javascript的一些部分,以避免范围污染

(function(param, undefined){
  //Normal function definition in here
  ...
});
但是我不理解函数定义后面加括号的语法

编辑

我明白括号里的意思。
我不明白的是函数定义后面有括号的语法:
function(…){…}(…)

如果定义了bar.foo,请使用它——如果没有定义,请使用此空对象(
{}

编辑-以适应新的澄清


它的位置意味着在执行函数之前,它将处理bar.foo赋值;类似于设置默认值。

如果定义了bar.foo,请使用它——如果没有定义,请使用此空对象(
{}

编辑-以适应新的澄清


它的位置意味着在执行函数之前,它将处理bar.foo赋值;类似于设置默认值。

如果定义了bar.foo,请使用它——如果没有定义,请使用此空对象(
{}

编辑-以适应新的澄清


它的位置意味着在执行函数之前,它将处理bar.foo赋值;类似于设置默认值。

如果定义了bar.foo,请使用它——如果没有定义,请使用此空对象(
{}

编辑-以适应新的澄清


它的位置意味着在执行函数之前,它将处理bar.foo赋值;与设置默认值类似。

这是一个需要参数的自动执行函数
bar.foo
是发送给它的参数(在使用函数时将是
param
)。 如果
bar.foo
在执行函数之前没有值,则将其设置为
{}
,否则,将其设置为自身,然后传入

(函数(param1、param2、param3){
var ele=document.getElementById(“结果”);
ele.innerHTML+=“param1:”+param1;
ele.innerHTML+=“
”; ele.innerHTML+=“param2:”+param2; ele.innerHTML+=“
”; ele.innerHTML+=“param3:”+param3; ele.innerHTML+=“
”; param3=param3 | |“香蕉”; ele.innerHTML+=“更改后的param3:”+param3; })(“苹果”、“橙子”)
这是一个需要参数的自动执行函数
bar.foo
是发送给它的参数(在使用函数时将是
param
)。 如果
bar.foo
在执行函数之前没有值,则将其设置为
{}
,否则,将其设置为自身,然后传入

(函数(param1、param2、param3){
var ele=document.getElementById(“结果”);
ele.innerHTML+=“param1:”+param1;
ele.innerHTML+=“
”; ele.innerHTML+=“param2:”+param2; ele.innerHTML+=“
”; ele.innerHTML+=“param3:”+param3; ele.innerHTML+=“
”; param3=param3 | |“香蕉”; ele.innerHTML+=“更改后的param3:”+param3; })(“苹果”、“橙子”)
这是一个需要参数的自动执行函数
bar.foo
是发送给它的参数(在使用函数时将是
param
)。 如果
bar.foo
在执行函数之前没有值,则将其设置为
{}
,否则,将其设置为自身,然后传入

(函数(param1、param2、param3){
var ele=document.getElementById(“结果”);
ele.innerHTML+=“param1:”+param1;
ele.innerHTML+=“
”; ele.innerHTML+=“param2:”+param2; ele.innerHTML+=“
”; ele.innerHTML+=“param3:”+param3; ele.innerHTML+=“
”; param3=param3 | |“香蕉”; ele.innerHTML+=“更改后的param3:”+param3; })(“苹果”、“橙子”)
这是一个需要参数的自动执行函数
bar.foo
是发送给它的参数(在使用函数时将是
param
)。 如果
bar.foo
在执行函数之前没有值,则将其设置为
{}
,否则,将其设置为自身,然后传入

(函数(param1、param2、param3){
var ele=document.getElementById(“结果”);
ele.innerHTML+=“param1:”+param1;
ele.innerHTML+=“
”; ele.innerHTML+=“param2:”+param2; ele.innerHTML+=“
”; ele.innerHTML+=“param3:”+param3; ele.innerHTML+=“
”; param3=param3 | |“香蕉”; ele.innerHTML+=“更改后的param3:”+param3; })(“苹果”、“橙子”)
正在以(bar.foo=bar.foo | |{})作为参数触发函数。如果存在bar.foo,则函数将以bar.foo作为参数。如果它是未定义的(这是错误的),那么它将接受{}作为参数。我希望这有帮助

正在以(bar.foo=bar.foo | |{})作为参数触发函数。如果存在bar.foo,则函数将以bar.foo作为参数。如果它是未定义的(这是错误的),那么它将接受{}作为参数。我希望这有帮助

正在以(bar.foo=bar.foo | |{})作为参数触发函数。如果存在bar.foo,则函数将以bar.foo作为参数。如果它是未定义的(这是错误的),那么它将接受{}作为参数。我希望这有帮助

正在以(bar.foo=bar.foo | |{})作为参数触发函数。如果存在bar.foo,则函数将以bar.foo作为参数。如果它是未定义的(这是错误的),那么它将接受{}作为参数。我希望这有帮助

在函数声明后放置括号会立即启动对它的调用。这与这样做是一样的:

var fn = function () { ... };
fn();
因为函数声明的返回值是函数对象,并且在应用时