javascript 函数声明与函数表达式的区别
-
就一点,函数声明有函数声明提升效果,可以在定义之前就引用,而函数表达式必须先赋值然后引用
-
解析器会率先读取函数声明,并使其在执行任何代码之前可用(可以访问);至于函数表达式,则必须等待解析器执行到它所在的代码行,才会被解释执行
alert(sum(10,10));
function sum(a, b) {
return a + b;
}
- 以上代码完全可以正常运行。因为在代码开始执行之前,解析器就已经通过一个名为函数声明提升的过程,读取并将函数声明添加到执行环境中。对代码代码求值时,JavaScript引擎在第一遍会声明函数并将它们放到源代码树的顶部。所以,即使声明函数的代码在调用他的代码后面,JavaScript引擎也能把函数声明提升到顶部。
alert(sum(10,10));
var sum = function(num1, num2){
return num1 + num2;
};
-
以上代码报错“undefined”,因为在执行到函数所在的语句之前,变量sum中不会保存有对函数的引用,而且,由于第一个行代码就会导致“unexpected identifier”(意外标识符)错误,实际上也不会执行到下一行
-
除了什么时候可以通过变量访问函数这一点区别外,函数声明与函数表达式的语法其实是等效的
网友评论