function foo() {
function bar(a) {
i =8;//这边声明冲突
console.log(a+i);
}
for (var i =0 ;i<10; i++){
bar(i);
}
}
foo();
IIEF Immediately Invoked Function Expression
(function foo(){ /* code */ })();
As the primary use of IIFE is to introduce function-level scope, naming
the function is not really required.
a slight variation of IIFE:
(function(){ /* code */ }());
也可以传值进来:
(function foo(b) {
var a = 2;
console.log( a + b );
})(3); //prints 5