函数声明和函数表达式的区别

函数声明的格式:

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()的时候,函数表达式还没有被添加到执行环境。

原文地址:https://www.cnblogs.com/lionisnotkitty/p/6024415.html