参考四种函数调用:http://www.cnblogs.com/qlqwjy/p/7660013.html
http://www.cnblogs.com/qlqwjy/p/7660375.html
1.首先理解自调函数:(有名自调与匿名自调)
两个圆括号,第二个括号传递参数即可自调。
<script type="text/javascript"> (function test(para){ alert("test函数"+para) })('1'); (function(para){ alert("匿名函数"+para) })('2'); </script>
2.有名字函数的调用:
alert(test)是打印test函数的语句,test相当于一个变量,值为整个声明函数的语句。test(1)可以理解为(test)(1),也就是先用括号将test变量包起来然后加个(1)形成函数调用形式
function test(para){ alert("test函数"+para); } alert(test); test(1);
3.匿名函数的调用:
alert(fun)是打印匿名函数的语句,fun相当于一个变量,值为整个声明函数的语句。fun(2)可以理解为(fun)(2),也就是先用括号将fun变量包起来然后加个(2)形成函数调用形式.
var fun = function(para){ alert("匿名函数"+para) } alert(fun); fun(2);
4.匿名函数也可以带函数名字:
var fun = function test3(para){ alert("匿名函数"+para) } alert(fun); fun(2);
5.直接量函数
只要是表达式语法,脚本宿主就认为 function 是一个直接量函数,如果什么都不加,光以 function 开头的话则认为是一个函数声明,把 function 写进一个表达式内部,比如四则运算,宿主也会将其当作是一个直接量,如下:
只有函数表达式可以被立即调用,函数声明不可以.
alert(10+function(para){return para;}(5)) +function (a) { alert(a) }('a');
var fun = function test3(para){ return "3"; }(); alert(fun);