一、 定义函数的方式

定义函数有两种方式:函数声明和函数表达式。
函数声明的语法是这样的:

function functionName(arg0,arg1){//函数体
}

首先是function关键字,然后是函数的名字,这就是指定函数名的两种方式。关于函数声明,他最重要的一个特征,就是函数声明提升,意思是会在执行代码前读取函数声明。这就意味着可以把函数声明放在调用它的语句后。如:

a();
function a(){alert("a");}
//a

这个例子不会出错,因为在执行代码前就会先读取函数声明。
第二种创建函数的方式是函数表达式,下面是最常见的一种方式:

var a = function(arg0,arg1){//函数体
};

这种形式看起来就像常规的变量赋值语句,即创建一个函数并把它赋值给变量a,这种情况下创建的函数叫做匿名函数,因为function关键字后面没有标识符。
函数表达式与其他表达式一样,在使用前必须赋值。下面的代码会导致错误:

a();
var a = function(){alert("a");};//错误
//补充说明:使用该方法定义函数,只有变量声明提前了,变量初始化代码仍在原来的位置

二、 函数声明与函数表达式的区别

1、函数声明中函数名是必须的,函数表达式中则是可选的。

//函数声明function sum(a, b) {return a + b;}alert(sum(1, 2));
//函数表达式/* var s = function sum(a, b) {return a + b;}alert(s(1, 2)); */var s = function(a, b) {return a + b;}alert(s(1, 2));//以上两种都可以

2、用函数声明定义的函数,函数可以在函数声明之前调用,而用函数表达式定义的函数则只能在声明之后调用。

根本原因在于解析器对于这两种定义方式读取的顺序不同:解析器会实现读取函数声明,即函数声明放在任意位置都可以被调用;而对于函数表达式,解析器只有在读到函数表达式所在那一行时才会开始执行(详情请看第一部分“函数定义的方式”)。

函数声明与函数表达式的区别相关推荐

  1. js函数声明和函数表达式的区别

    Javascript Function无处不在,而且功能强大!通过Javascript函数可以让JS具有面向对象的一些特征,实现封装.继承等,也可以让代码得到复用.但事物都有两面性,Javascrip ...

  2. Javascript 函数声明和函数表达式的区别

    2019独角兽企业重金招聘Python工程师标准>>> Javascript Function无处不在,而且功能强大!通过Javascript函数可以让JS具有面向对象的一些特征,实 ...

  3. 逆推继承看原型 函数的角色 函数声明和函数表达式的区别 函数中this指向的问题

    逆推继承看原型 <!DOCTYPE html> <html lang="en"> <head><meta charset="UT ...

  4. JavaScript的函数声明与函数表达式的区别

    1)函数声明(Function Declaration); // 函数声明function funDeclaration(type){return type==="Declaration&q ...

  5. 函数声明和函数表达式的区别:

    函数声明和函数表达式的区别: function sum(){}; 函数声明,和var一样,会被提前到代码最前面定义.fn1():// 1 function fn1(){​ console.log(1) ...

  6. JavaScript 函数声明,函数表达式,匿名函数,立即执行函数之区别

    函数声明:function fnName () {-};使用function关键字声明一个函数,再指定一个函数名,叫函数声明. 函数表达式 var fnName = function () {-};使 ...

  7. javascript 函数声明与函数表达式的区别

    还是一样,先上代码: <script>var f = function g() {return 1;};if (false) {f = function g(){return 2;};}a ...

  8. JavaScript程序开发(十四)—函数声明与函数表达式

    函数声明和函数表达式虽然都是在声明一个函数,但是二者有区别,解析器对二者的解析并非是一视同仁的.解析器会率先解析读取函数声明,并使其可以在执行任何代码前可用(可以访问):至于函数表达式,则必须等到解析 ...

  9. Javascript 学习笔记 - 函数 - 关于IIFE - 关于函数声明和函数表达式 - 个人总结

    一切起源于一段代码(近来学完java基础 开始学习敲一下javascript): var getter = function(){var dayNames=["Sunday",&q ...

最新文章

  1. SQL Server ltrim(rtrim()) 去不掉空格
  2. 昨天,JetBrains 推出“下一代 IDE”,快看有哪些值得期待的功能!
  3. 判断一颗二叉树是否为搜索二叉树和完全二叉树
  4. android studil打断点_【小技巧】AndroidStudio利用断点打印日志
  5. OpenCV-图像特征harris角点检测/SIFT函数/特征匹配-05
  6. 计算机软考笔记之《数据库基础》
  7. 汽车故障检测软件_检测认证事业部软件测评公司党支部与汽车测评管理中心党支部开展党建共建活动...
  8. 交互设计软件 html,交互设计工具篇
  9. 安全使用Mac教程 – 使用文件保险箱加密 Mac 数据
  10. html页面最大化最小化设置,网页窗口最大化快捷键 改变窗口大小的快捷键是什么...
  11. 什么是web services?它有什么作用,以及它如何实现?
  12. 每日数学-三角变换恒等式
  13. 今天的一点杂感-20220414
  14. win10下装黑苹果双系统_笔记本加装固态打造黑苹果+WIN双系统,雷克沙NS100升级体验...
  15. 云计算入门必备的60条术语
  16. Java程序启动参数 -D详解
  17. jnz和djnz_第3章单片机指令系统_练习
  18. 2、海思3518ev300 设置usb网络
  19. 巴西审定用于空客321飞机的AerSafe系统符合燃料箱可燃性降低规则
  20. js判断客户端是移动端还是PC端

热门文章

  1. 如何判断文件是否读到文件结尾
  2. 东方博宜oj答案1101-1150
  3. 顺风车拼车源码java_基于jsp的智能拼车-JavaEE实现智能拼车 - java项目源码
  4. 一文读懂Loot自下而上的NFT构建方式
  5. Navicat筛选功能
  6. android不做手机控,不做手机控精简版
  7. 1119-总结黄金白银的一些规律
  8. 渠道数字化有什么好处?如何实现渠道数字化营销?
  9. Q_D指针(d指针)和Q_Q指针(q指针)简介
  10. java小demo---员工管理系统