第一种格式:
var a=3;
(function foo(global){
//块级作用域
var a=1;
console.log(a); //1
console.log(global.a);//3
})(window);
console.log(a);
《=============================================》
var someFunction = function(){
console.log("1");
}
someFunction();
function(){
console.log("1")
}(); //报错,语法错误,函数声明后面不能跟圆括号
将函数包含在()内,表示它实际上是个函数表达式。
由于函数被包含在一对()括号内部,因此成为了一个表达式,通过在末尾加上别外一个()可以立即执行这个函数。第一个()将函数变成表达式,第二个()执行了这个函数。
function outputNumber(count){
(function(){
for(var i=0;i<count;i++){
console.log(i);
}
alert(i);//错误
})
}
在匿名函数函数中定义的任何变量,匿名(没有名字的)函数无法指向本身,会在函数执行结束时被销毁。所有i只能在循环中使用,使用后被销毁。
《==============================================》
第二种格式:
(function foo(){
var b=1;
console.log(b);
}());
第三种格式:
var a=2;
(function IFEE(def){
def(window)
})(function def(global){
var a=3;
console.log(a);//3
console.log(global.a);//2
});