一、函数声明
alert(sum(1,2));//结果是3,解析器首先读取声明,并使其在执行任何代码之前可用; function sum(x,y){ return x+y; }
不仅是函数,变量的声明也会先解析,但是赋值会在执行到那一行才进行,也就是说:最开始会有这个变量,但它是undefined
alert(a);//undefined var a = 5;
二、匿名函数
show(1,2,function(x,y){ return x+y; }); function show(x,y,test){ alert(test(x,y)); }
三、函数表达式
show(1,2,function(x,y){ return x+y; }); //这里会报错Uncaught TypeError: show is not a function // 也就是说有show这个变量,它已被解析到,但还没有执行赋值,它应该还是undefined var show = function(x,y,test){ alert(test(x,y)); }; //将一个匿名函数赋给show变量
除了什么时候通过变量访问函数这一点区别外,函数声明与函数表达式的语法是等价的。