广州web培训
达内广州五羊中心

18589266248

热门课程

JavaScript 函数的两种声明方式

  • 时间:2016-11-23 11:11
  • 发布:广州web培训
  • 来源:简书

JavaScript声明函数有两种选择:函数声明法,表达式定义法。

函数声明法

function sum (num1 ,num2){   

return num1+num2  

}

表达式定义法

var sum = function(num1,num2){   

return num1+num2  

};

两种函数声明的区别

解析器会率先读取函数声明(也就是说函数声明的优先级较高),并使其在执行任何代码之前可以访问(将函数声明提升到代码树顶部);至于函数表达式声明,则必须等到解析器执行到它所在的代码行,才会执行,无法自动提升。

同样的函数使用不同的定义方式,调用的时候会产生不同的效果。

我们来看一看这两种声明方式到底对代码产生了怎样的影响。首先看函数声明,由于发生了代码提升,实际的代码如下:

//函数声明法

function add(a, b) {

return a + b

}

var num = add(1, 2);

console.log(num);// 3

//function add(a, b) {

//    return a + b

//}

再看表达式声明法,同样将变量add提升,add()函数调用的时候,只声明了变量add,却没有进行赋值。(此时的add变量是undefined)实际的代码如下。

//函数表达式声明

var add;

var num = add(1, 2);

console.log(num);//Uncaught TypeError: undefined is not a function

add = function (a, b) {

return a + b

}

JavaScript是解释型语言,但它并不是逐行执行的。达内广州web培训建议你可以把解析过程理解为两个阶段:一个是预处理阶段,JavaScript将脚本代码转换为字节码,该过程中将所有定义的变量提升到代码树顶端;第二个阶段,JavaScript解释器借助执行环境,把字节码生成机械码,该过程中才发生变量的赋值,并顺序执行。

上一篇:达内广州web培训详解JS代码规范
下一篇:达内广州web培训详解JS:this关键字

马上预约三天免费体验课

姓名:

电话:

达内广州web培训详解ES5循环:for-in

达内广州web培训详解ES6循环:for-of

达内广州web培训详解ES5循环:forEach

达内广州web培训详解ES5简单for循环

选择城市和中心
江西省

贵州省

广西省

海南省