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

<script type="text/javascript">alert(add(2,3));function add(a,b){return a+b;}
</script>

该段代码可以正常执行,因为add(a,b)是一个函数声明,解析器可以在任何地方解析执行这个函数。而下面的代码:

<script type="text/javascript">alert(2,3);var sum = function(a,b){return a+b;}
</script>

这段代码虽然也有输出,有执行,但并不是正确的执行了预期的功能。因为这段代码是一个函数表达式,必须确保解析器执行到了声明函数的这一行,才能被正确的调用,所以是本段代码是没有被正确执行的。

还有一个小的知识点,就是作为值的函数,如果要访问的是函数的指针,而不是执行函数的话,那么久必须去掉函数后面的那对圆括号。如下代码:

<script type="text/javascript">function callSomeFunction(someFunction,someArguments){return someFunction(someArguments);}function add10(num){return num+=10;}var result1 = callSomeFunction(add10,10);document.write(result1+"<br />");var result2 = add10(10);document.write(result2+"<br />");
</script>

传递给callSomeFunction的add10。

转载于:https://www.cnblogs.com/yansj1997/archive/2012/06/26/2563689.html

JavaScript程序开发(十四)—函数声明与函数表达式相关推荐

  1. javascript函数声明和函数表达式

    JavaScript中定义函数最常用的方式是函数声明和函数表达式.这两种技术非常相似,有时甚至难以区分,但在后续章节中可以看到,它们之间还是存在着微妙的区别. JavaScript定义函数最基本方式是 ...

  2. c语言标准库详解(十四):时间函数time.h

    c语言标准库详解(十四):时间函数<time.h> 概述 头文件<time.h>中声明了一些处理日期与时间的类型和函数.其中的一些函数用于处理当地时间,因为时区等原因,当地时间 ...

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

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

  4. 二分法查找c语言程序_C语言的那些经典程序 第十四期

    戳"在看"一起来充电吧! C语言的那些经典程序 第十四期 本期小C给大家带来三个用C语言解决实际问题的典例.如果全都理解,相信肯定能给大家带来收获!接下来让我们看看是哪些程序吧! ...

  5. vue小程序开发(四)首页 推荐

    vue小程序开发(四)首页 推荐 编写 首页-推荐 模块 推荐-最顶部模块 推荐-月份模块 月份模块标题样式 推荐-热门模块 基本布局 使用scroll-view改造容器 分页功能分析 实现头部固定 ...

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

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

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

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

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

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

  9. JavaScript学习(十四)—元素节点关系和特殊节点

    JavaScript学习(十四)-元素节点关系和特殊节点 一.元素节点 (1).parentElement: 获取某元素的父元素,它和parentNode的区别是parentElement获取到的值时 ...

最新文章

  1. Innodb表压缩过程中遇到的坑(innodb_file_format) - billy鹏
  2. 【Linux】9_存储管理交换分区管理Swap
  3. EOS账户系统(6)权限和Action映射
  4. Celery分布式任务队列的认识和基本操作
  5. 网友提问:当我要使用一个陌生的标准BAPI,我可以去哪里找到比较详尽的文档指导一类的资料
  6. MySQL的IFNULL() 函数使用
  7. dup和dup2的使用方法
  8. 领域应用 | 知识图谱数据构建的“硬骨头”,阿里工程师如何拿下?
  9. android怎样判断插入数据是否成功_MySQL一个表的自增id用完了,背井大佬让我用这些姿势再往里插数据...
  10. Windows上安装运行 cnpm, 来代替 npm
  11. 线性筛法求质数分解、欧拉函数
  12. 向SourceView增加垂直行号标注
  13. mybatis直接执行sql_拼多多二面:Mybatis是如何执行一条SQL命令的?
  14. scrapy_全站爬取
  15. FPGA智能传感系统(二)基于FPGA的交通灯设计
  16. VBS 控制 Windos 系统音量 及视频播放
  17. php cms 那个安全,PHPCMS系统安全设置步骤
  18. 用c语言写图书管理系统设计,C语言图书管理系统设计及实现.doc
  19. 直播app源码,隐藏导航栏和状态栏
  20. 计算机控制技术论文英语版,计算机控制技术外文论文

热门文章

  1. ElasticSearch优化系列二:机器设置(内存)
  2. OpenCV属性页配置问题~
  3. 国土空间规划中工作底图如何制作
  4. 使用google map实现周边搜索的功能_「转」“搜索”的原理,架构,实现,实践,面试不用再怕了...
  5. Xception论文笔记
  6. VMware虚拟化/云计算
  7. Android屏幕大小和密度对照表,以及px、dip、sp等像素单位的解释
  8. spss文件 服务器登录,spss连接远程服务器
  9. 不同用户同时并发测压_程序猿学GO:并发
  10. python线程进程协程面试_Python学习经验之谈:关于协程的理解和其相关面试问题...