函数声明格式:
1 function add(a, b) { 2 alert(a+b); 3 }
函数表达式格式:
1 var add = function (a, b) { 2 alert(a+b); 3 }
解析器在向环境中加载数据时,对函数表达式和函数声明就像一个男人对原配和对小三.当然是先满足原配,在去照顾小三.解析器会通过"函数声明提升过程",读取并将函数声明添加到执行环境中.
所以声明函数的代码在调用他的代码的后面,也能正常执行.但是函数表达式就没有这个待遇了.当一个男人先满足小三,再去满足自己的老婆,肯定是要出问题的啦
1 //可以正确执行 2 add(1, 3); 3 function add(a, b) { 4 alert(a+b); 5 }
1 //不可以正确执行,报错: add is not a function; 2 add(1, 3); 3 var add = function (a, b) { 4 alert(a+b); 5 }
函数声明在火狐,苹果,谷歌和欧鹏下还有一个非标准的name属性,通过这个属性可以访问到给函数指定的名字.
1 function add() { } 2 alert(add.name);//add