函数声明和函数表达式的区别
函数声明的格式:
function name(obj){
returen obj.x;
}
函数表达式的格式:
var name=function(obj){
returen obj.x;
}
函数声明和函数表达式在解析的过程中是不一样的。解析器在向执行环境中加载数据时,会先读取函数声明,并使其在执行任何代码之前可用,而函数表达式,必须等到解析器执行到它所在的代码行,才会真正被解析执行。
例:
<script>
alert(name({x:amy}));
function name(obj){
return obj.x;
}
</script>
可用正常运行,在代码开始执行前,解析器已经读取了函数声明并添加到执行环境中。
<script>
alert(name({x:amy}));
var name=function(obj){
return obj.x;
}
}
</script>
会报错,在执行alert()的时候,函数表达式还没有被添加到执行环境。