函数声明和函数表达式
- 函数声明:
function fn(){
console.log(''hello")
}
fn()
- 函数表达式
var fn = function(){
console.log('hello')
}
fn();
- 区别:
解析器在向执行环境中加载数据时,对函数声明和函数表达式的解析是不同的,解析器会率先读取函数声明,并使其在执行任何代码之前可以被访问,至于函数表达式,则必须等到解析器执行到它所在的代码行,才会真正被解析。
- 函数声明
alert(sum(10,10)) // 20
function sum(sum1,sum2){
return sum1 + sum2;
}
因为在代码开始执行之前,解析器通过一个名为函数声明提升的过程,读取并将函数sum()添加到执行环境中,即函数声明提前。
- 函数表达式
alert(sum(10,10))
var sum = function(sum1,sum2){
return sum1 + sum2;
}
对函数表达式先调用,在声明就会报错,因为此时函数位于一个初始化语句中,而不是一个函数声明,换句话说,就是在代码执行到函数表达式语句之前,不会存在任何对函数的引用。
函数表达式和var关键字是一样的,需要先声明在使用
上面语句可以理解成:
var sum // undefined
alert(sum()) // 报错,下面的语句就根本不会执行