JavaScript进阶 互动版

函数声明和函数表达式


JavaScript解析器在向执行环境加载数据的时候,对函数声明和函数表达式并不是一视同仁的。 对于前者解析器会率先读取,并使其在执行任何代码之前可用;对于后者,则必须等到解析器执行 到它所在的代码行,才会真正被解析执行。看如下中的示例:

alert(sum(3,11));  //弹出14
function sum(x, y) {
    return x + y;
}

把上面的函数声明定义的函数转换为函数表达式定义函数。如下:

alert(sum(3,11);   // unexpected identifier 意外标识符错误
var sum = function (x, y) {
    return x + y;
}

上述中第二段代码与西宁会产生错误,因为在执行到函数所在的语句之前,变量sum 中不会保存有对函数的引用;而且由于第一行代码就会报错,也不会执行到下一行。

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