只有表达式才能被执行,函数声明不能执行,必须调用
function(){...}//函数声明 (function(){...}())//表达式
只有表达式才能被执行符号执行,下面的声明是不能直接调用的;
function test(){ var a=123; }();//出错,函数声明不能被直接调用 test(); //能被函数执行的表达式,名字被自动忽略,test()找不到了 var test=function(){ console.log('a') }() //传参 function test(a,b,c,d){ console.log(a+b+c+d) }(1,2,3,4)
功能:只需要执行一次,初始化函数
var num = (function(a,b,c){ console.log(a) var d=a+b+c*2-2 return d; }(1,2,c))//w3c建议 第二种引用方法 (function(){})() 其它数学运算符号转换 //+ - ! && ||都可以转成表达式 +function test() { // body... }();
初始化数据 立即执行函数
var num = (function(a,b){ console.log(a+b); return a+b; }(1,2))
arguments方法
arguments.callee 指函数本身
func.caller 找到是谁调用的,一般没什么用var num = (function(n){ if(n==1){return 1;}
return n*arguments.callee(n-1); }(100)) function test(){ console.log(arguments.callee);//test function demo(){ console.log(arguments.callee);//demo } }
function test(){ demo(); } function demo(){ console.log(arguments.caller) } test();