Javascript学习笔记:3种定义函数的方式

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Javascript学习笔记:3种定义函数的方式相关的知识,希望对你有一定的参考价值。

①使用函数声明语法定义函数

1 function sum(num1,num2){
2   return num1+num2;  
3 }

②使用函数表达式定义函数

1 var sum=function(num1,num2){
2   return num1+num2;  
3 }

③使用Function构造函数定义函数

1 var sum=new Function(‘num1‘,‘num2‘,‘return num1+num2‘);

三种定义函数的方式,其中第二和第三种从技术角度讲都属于函数表达式的方式,但是不推荐使用第三种即使用Function构造函数的方式,因为这种方式性能低于前两种方式。不管以哪种方式定义函数,函数都是Function类型的实例,而且都与其他引用类型一样拥有属性和方法。这三种定义函数的方式唯一不等价的地方是:第二种和第三种方式定义的函数不存在函数声明提升,第一种方式定义的函数存在函数声明提升(所谓函数声明提升,也就是解析器在向执行环境中加载数据时,会率先读取函数声明,并使其在任何代码之前可以访问),其他方面都是等价的。

1 sum(1,2);//3
2 
3 function sum(num1,num2){
4  return num1+num2;
5 }

使用函数声明语法定义函数的方式存在函数声明提升,所以sum函数可以正常执行。

1 sum(1,2);//TypeError: sum is not a function
2 
3 var sum=function(num1,num2){
4   return num1+num2;  
5 }

 使用函数表达式定义行数的方式不存在函数声明提升,所以会报出异常。

1 sum(1,2);//TypeError:sum is not a function
2 
3 var sum=new Function(‘num1‘,‘num2‘,‘return num1+num2‘);

使用Function构造函数定义函数的方式不存在函数声明提升,所以会报出异常。

 

以上是关于Javascript学习笔记:3种定义函数的方式的主要内容,如果未能解决你的问题,请参考以下文章

《javascript高级程序设计》学习笔记 | 8.4.类

JavaScript学习笔记

javascript 学习笔记 --数据类型

JavaScript 学习-7.函数定义的几种方式

《javascript高级程序设计》学习笔记 | 10.1-10.8.函数基础

学习笔记Javascript函数调用