js中函数声明与函数表达式


Posted in Javascript onJune 03, 2015

目前为止,我们一直没有对函数声明和函数表达式加以区别。而实际上,解析器在向执行环境中加载数据时,对函数声明和函数表达式并非一视同仁。解析器会率先读取函数声明,并使其在执行任何代码之前可用(可以访问);至于函数表达式,则必须等到解析器执行到它所在的代码行,才会真正被解释执行。如下例子:

alert(sum(10,10));

function sum(num1,num2)

{

    return num1+num2;

}

以上代码完全可以正确执行,因为在代码开始执行之前,解析器就已经通过一个名为函数声明提升(function declaration hoisting)的过程,读取并将函数声明添加到执行环境中。对代码求值时,JavaScript引擎在第一遍会声明函数并将它们放到源代码树的顶部。所以,即使声明函数的代码在调用它的代码后面,JavaScript引擎也能把函数声明提升到顶部。如果像下面的例子所示,把上面的函数声明改为等价的函数表达式,就会在执行的时候出现错误。

alert(sum(10,10));

var sum=function(num1,num2)

{

    return num1+num2;

};

以上代码会在运行的时候出现错误,原因在于函数位于一个初始化语句中,而不是一个函数声明。换句话讲,在执行到函数所在的语句之前,变量sum中不会保存有对函数的引用;而且,由于第一行代码就会导致“unexpected identifier”(意外标识符)错误,实际上也不会执行到下一行。

除了声明时候可以通过变量访问函数这一点区别之外,函数声明与函数表达式的语法其实是等价的。

注:也可以同时调用函数声明和函数表达式,例如 var sum=function sum(){}。不过,这种语法在Safari中会导致错误。

以上所述就是本文的全部内容了,希望对大家学习javascript能够有所帮助。

Javascript 相关文章推荐
jquery中文乱码的多种解决方法
Jun 21 Javascript
jquery 漂亮的删除确认和提交无刷新删除示例
Nov 13 Javascript
js 本地预览的简单实现方法
Feb 18 Javascript
javascript调试之DOM断点调试法使用技巧分享
Apr 15 Javascript
JQuery判断checkbox是否选中及其它复选框操作方法合集
Jun 01 Javascript
利用Vue v-model实现一个自定义的表单组件
Apr 27 Javascript
js实现加载页面就自动触发超链接的示例
Aug 31 Javascript
使用Vue完成一个简单的todolist的方法
Dec 01 Javascript
解决IE11 vue +webpack 项目中数据更新后页面没有刷新的问题
Sep 25 Javascript
jQuery插件simplePagination的使用方法示例
Apr 28 jQuery
解决vue prop传值default属性如何使用,为何不生效的问题
Sep 21 Javascript
vue/cli 配置动态代理无需重启服务的方法
May 20 Vue.js
JavaScript基本语法讲解
Jun 03 #Javascript
通过实例理解javascript中没有函数重载的概念
Jun 03 #Javascript
ECMAScript中函数function类型
Jun 03 #Javascript
JavaScript运算符小结
Jun 03 #Javascript
浅谈JavaScript字符串与数组
Jun 03 #Javascript
详谈javascript中的cookie
Jun 03 #Javascript
jquery滚动特效集锦
Jun 03 #Javascript
You might like
PHP通过COM使用ADODB的简单例子
2006/12/31 PHP
PHP 网页过期时间的控制代码
2009/06/29 PHP
php 模拟POST|GET操作实现代码
2010/07/20 PHP
支付宝服务窗API接口开发php版本
2016/07/20 PHP
[原创]PHP实现生成vcf vcard文件功能类定义与使用方法详解【附demo源码下载】
2017/09/02 PHP
php实现分页功能的详细实例方法
2019/09/29 PHP
jquery简单体验
2007/01/10 Javascript
jquery lazyload延迟加载技术的实现原理分析
2011/01/24 Javascript
from 表单提交返回值用post或者是get方法实现
2013/08/21 Javascript
使用window.prompt()实现弹出用户输入的对话框
2015/04/13 Javascript
javascript日期比较方法实例分析
2016/06/17 Javascript
js选择器全面解析
2016/06/27 Javascript
jQuery与JavaScript节点创建方法的对比
2016/11/18 Javascript
JavaScript动态数量的文件上传控件
2016/11/18 Javascript
JavaScript实现图片拖曳效果
2017/09/08 Javascript
JavaScript设计模式之构造函数模式实例教程
2018/07/02 Javascript
JS实现判断数组是否包含某个元素示例
2019/05/24 Javascript
微信小程序 简易计算器实现代码实例
2019/09/02 Javascript
python让图片按照exif信息里的创建时间进行排序的方法
2015/03/16 Python
Python 常用 PEP8 编码规范详解
2017/01/22 Python
python编程羊车门问题代码示例
2017/10/25 Python
python使用xlrd和xlwt读写Excel文件的实例代码
2018/09/05 Python
Django 反向生成url实例详解
2019/07/30 Python
python连接mongodb集群方法详解
2020/02/13 Python
CSS3实现超酷的黑猫警长首页
2016/04/26 HTML / CSS
菲律宾票务网站:StubHub菲律宾
2018/04/21 全球购物
英国手工制作的现代与经典的沙发和床:Love Your Home
2020/09/26 全球购物
Oracle快照(snapshot)
2015/03/13 面试题
学生实习推荐信范文
2013/11/26 职场文书
实用的简历自我评价
2014/03/06 职场文书
市级青年文明号申报材料
2014/05/26 职场文书
个人校本研修方案
2014/05/26 职场文书
社区党员群众路线教育实践活动心得体会
2014/11/03 职场文书
政协工作总结2015
2015/05/20 职场文书
感恩教师主题班会
2015/08/12 职场文书
JavaScript组合继承详解
2021/11/07 Javascript