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

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

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

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

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

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

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

 sum(1,2);//

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

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

 sum(1,2);//TypeError: sum is not a function

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

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

 sum(1,2);//TypeError:sum is not a function

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

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

Javascript学习笔记:3种定义函数的方式的更多相关文章

  1. JavaScript学习笔记(七)——函数的定义与调用

    在学习廖雪峰前辈的JavaScript教程中,遇到了一些需要注意的点,因此作为学习笔记列出来,提醒自己注意! 如果大家有需要,欢迎访问前辈的博客https://www.liaoxuefeng.com/ ...

  2. JavaScript学习笔记(二)——函数和数组

    第二章 函数简介 1 第一个函数示例 <script language="JavaScript" type="text/JavaScript"> f ...

  3. js两种定义函数、继承方式及区别

    一:js两种定义函数的方式及区别 1:函数声明: function sayA() { alert("i am A"); } 2:函数表达式: var sayB = function ...

  4. JavaScript学习笔记:基础知识点总结

    基础概念 JavaScript(以下简称Js)中数据类型:Number 字符串 布尔值 数组 对象(Js的对象是一组由键值对组成的无序集合) Js中基础概念:变量(概念和Java中变量概念类似 指示某 ...

  5. JavaScript:学习笔记(7)——VAR、LET、CONST三种变量声明的区别

    JavaScript:学习笔记(7)——VAR.LET.CONST三种变量声明的区别 ES2015(ES6)带来了许多闪亮的新功能,自2017年以来,许多JavaScript开发人员已经熟悉并开始使用 ...

  6. JavaScript:学习笔记(5)——箭头函数=>以及实践

    JavaScript:学习笔记(5)——箭头函数=>以及实践 ES6标准新增了一种新的函数:Arrow Function(箭头函数).本文参考的链接如下: MDN箭头函数:https://dev ...

  7. JavaScript学习12 JS中定义对象的几种方式

    JavaScript学习12 JS中定义对象的几种方式 JavaScript中没有类的概念,只有对象. 在JavaScript中定义对象可以采用以下几种方式: 1.基于已有对象扩充其属性和方法 2.工 ...

  8. 廖雪峰 JavaScript 学习笔记(函数)

    JavaScript中,定义函数的方式如下: function abs(x) { if (x >= 0) { return x; } else { return -x; } } 上述abs()函 ...

  9. Javascript高级编程学习笔记(23)—— 函数表达式(1)递归

    前面的文章中,我在介绍JS中引用类型的时候提过,JS中函数有两种定义方式 第一种是声明函数,即使用function关键字来声明 第二种就是使用函数表达式,将函数以表达式的形式赋值给一个变量,这个变量就 ...

随机推荐

  1. Computop支付网关(一) credit Card

    1.界面没有中文,只能选择英文 sp – Spanish; en – English; ca – Catalan; fr – French; de – German; du – Dutch; it – ...

  2. CSRF 攻击

    一.CSRF是什么? CSRF(Cross-site request forgery),中文名称:跨站请求伪造,也被称为:one click attack/session riding,缩写为:CSR ...

  3. 家教O2O维护“老师”的逼格,算不尊重市场吗

    既然做O2O,本身就是把这当服务业的.出钱的人才是老大.老师受到尊重是因为你传授的东西他人认可,而不该是因为“老师”两个字.另外,成年人会去请家教的,往往是自己有一些长处的.你只是一方面的老师,人家可 ...

  4. delphi实现的RTMP播放

    其实知道原理用什么语言实现都是可以的 1. 服务器 提供http服务, 点击start运行. 2. 测试客户端 定时获取http服务的数据, 坐标是服务器中写死的, 在中国地图中画了一个圈. 如: { ...

  5. SQLServer 游标 (A)

    游标 游标分为客户端游标和服务器端游标.Sql通过游标可以对一个结果集进行逐行处理.对于使用服务器端游标的过程有:声明.打开.读取.关闭.释放. 1 声明游标 1.1 SQL-92标准的声明 Decl ...

  6. ecplise常用快捷键

    常用 Ctrl+1 快速修复(最经典的快捷键,就不用多说了)Ctrl+D: 删除当前行 Ctrl+Alt+↓ 复制当前行到下一行(复制增加)Ctrl+Alt+↑ 复制当前行到上一行(复制增加)Alt+ ...

  7. phpcms V9 栏目管理

    关于phpcms V9框架系统后台管理之栏目管理,请参见下文的源码分析(添加栏目和修改栏目): 参照添加栏目的界面图示,便于对源代码的理解: <?php // 文件路径:phpcms/modul ...

  8. mssql数据库添加,修改,删除字段

    通用式: alter table [表名] add [字段名] 字段属性 default 缺省值 default 是可选参数 增加字段: alter table [表名] add 字段名 smalli ...

  9. Dedecms 图片加上Alt或Title等属性写法

    代码如下:$this->Fields['typename'] = $this->TypeLink->TypeInfos['typename']; SetSysEnv($this-&g ...

  10. 最牛B的编码套路 - 呦呦鹿鸣 - 博客频道 - CSDN.NET

    body{ font-family: "Microsoft YaHei UI","Microsoft YaHei",SimSun,"Segoe UI& ...