我们先来看函数的几种叫法: <script> //具名函数表达式 具有名字的函数,这里是bar var foo=function bar(){ console.log(foo==bar); //true 只在函数内部成立,foo和bar指向了同一个函数 }; //匿名函数表达式 var add=function(a,b){ return a+b; }; //函数的声明 function sayHi(){ alert("大家好呀,我是徐文华"); } </script> //函数声明和函数表达式的区别: <script type="text/javascript"> console.log(f1); //[funciton f1] f1是函数声明,在编译阶段就已经声明了 console.log(f2);//undefined 此时f2只是声明了,但是没有被赋值,只是这样:var f2; 我们知道, 一个变量只是声明而没有赋值的情况下默认值为undefined /* 函数声明和函数表达式 JS是先编译(编译的时候做了声明变量,声明函数,语法分析等工作), 后执行(执行的时候执行变量的赋值操作等) */ //函数声明 function f1(){ console.log("I am fn1"); } //函数表达式 var f2=function(){ console.log("I am fn2"); }; </script> <script> //再来看匿名函数 所谓匿名函数,就是指没有取名字的函数 function(){ alert("我是匿名函数"); } 这就是一个匿名函数,但这样是无法调用它的; 我们知道函数声明都会返回函数的首地址,我们可以用以个变量保存下来 var fn1=function(){ alert("我是匿名函数"); }; fn1();// "我是匿名函数" 还有一种办法,就是使用即时函数,也称自执行匿名函数 (function(){ alert("我是匿名函数"); })(); 这个函数会自动执行一次 左边的括号把这个匿名函数当做一个函数表达式,再加一个括号就是调用这个函数了。 自执行匿名函数特点:函数会自动调用自己,并且只调用一次,常用于做一些初始化的工作。 </script>
转载请注明:副业 and 脱单研究所 » JS中函数的各种叫法