函数声明与函数表达式

解析器在向执行环境中加载数据时,对函数声明和函数表达式并非一视同仁。解析器会率先读取函数声明,并使其在执行任何代码前可用;对于函数表达式,则必须等到解析器执行到它所在的代码行,才会真正被解释执行。

alert( sum( 10, 10 ) );

function sum( num1, num2 ){
    return num1 + num2;
}


以上代码完全可以正常执行。因为在代码开始执行之前,解析器就已经读取函数声明,并将其添加到执行环境中了。而下面的将函数声明改变为变量初始化方位,就会在执行中导致错误。

alert( sum( 10, 10 ) );

var sum = function( num1, num2 ){
    return num1 + num2;
}


以上代码之所以会在运行期间产生错误,就是因为函数位于一个初始化语句中,而不是一个函数声明。

除了什么时候可以通过变量访问函数这一点区别以外,函数声明与函数表达式的语法其实是等价的。

posted @ 2013-03-26 20:47  向往天空的鱼  阅读(112)  评论(0编辑  收藏  举报