函数声明和函数表达式

函数声明和函数表达式

  • 函数声明:
function fn(){
  console.log(''hello")
 }
fn()
  • 函数表达式
var fn = function(){
  console.log('hello')
 }
fn();
  • 区别:
    解析器在向执行环境中加载数据时,对函数声明和函数表达式的解析是不同的,解析器会率先读取函数声明,并使其在执行任何代码之前可以被访问,至于函数表达式,则必须等到解析器执行到它所在的代码行,才会真正被解析。
  1. 函数声明
alert(sum(10,10))   // 20
function sum(sum1,sum2){
    return sum1 + sum2;
}

因为在代码开始执行之前,解析器通过一个名为函数声明提升的过程,读取并将函数sum()添加到执行环境中,即函数声明提前。

  1. 函数表达式
alert(sum(10,10))
 var sum = function(sum1,sum2){
    return sum1 + sum2;
}
TIM图片20190117205339.png

对函数表达式先调用,在声明就会报错,因为此时函数位于一个初始化语句中,而不是一个函数声明,换句话说,就是在代码执行到函数表达式语句之前,不会存在任何对函数的引用。
函数表达式和var关键字是一样的,需要先声明在使用

上面语句可以理解成:
var sum // undefined
alert(sum())  // 报错,下面的语句就根本不会执行

你可能感兴趣的:(函数声明和函数表达式)