javascript的解析执行顺序在各个浏览器中的不同


Posted in Javascript onMarch 17, 2014

简介

javascript是一种解释型语言,它的执行是自上而下的。但是各浏览器对于【自上而下】的理解是有细微差别的,而代码的上下游也就是程序流对于程序正确运行又是至关重要的。所以我们有必要深入理解js的执行顺序。为此,我设计了如下八个实验来获得最确切的结果。

实验

<script type="text/javascript"> 
//实验一: 
function t(a) 
{ 
alert("[t(a)]a:" + a); 
} 
function t(a, b) 
{ 
alert("[t(a, b)]a:" + a + ", b:" + b); 
} 
t(1); 
//结果: 
//[t(a, b)]a:1, b:undefined //实验二: 
function t(a, b) 
{ 
alert("[t(a, b)]a:" + a + ", b:" + b); 
} 
function t(a) 
{ 
alert("[t(a)]a:" + a); 
} 
t(1); 
//结果: 
//[t(a)]a:1 
//实验三: 
function t(a) 
{ 
alert("[t(a)]a:" + a); 
} 
function t(a, b) 
{ 
alert("[t(a, b)]a:" + a + ", b:" + b); 
} 
t(1, 2); 
//结果: 
//[t(a, b)]a:1, b:2 
//实验四: 
function t(a, b) 
{ 
alert("[t(a, b)]a:" + a + ", b:" + b); 
} 
function t(a) 
{ 
alert("[t(a)]a:" + a); 
} 
t(1, 2); 
//结果: 
//[t(a)]a:1 
//实验五 
function t(a) 
{ 
alert("[t(a)]a:" + a); 
} 
t(1); 
function t(a, b) 
{ 
alert("[t(a, b)]a:" + a + ", b:" + b); 
} 
//结果: 
//[t(a, b)]a:1, b:undefined 
//实验六 
function t(a) 
{ 
alert("[t(a)]a:" + a); 
} 
t(1, 2); 
function t(a, b) 
{ 
alert("[t(a, b)]a:" + a + ", b:" + b); 
} 
//结果: 
//[t(a, b)]a:1, b:2 
//实验七 
function t(a, b) 
{ 
alert("[t(a, b)]a:" + a + ", b:" + b); 
} 
t(1); 
function t(a) 
{ 
alert("[t(a)]a:" + a); 
} 
//结果: 
//[t(a)]a:1 
//实验八 
function t(a, b) 
{ 
alert("[t(a, b)]a:" + a + ", b:" + b); 
} 
t(1, 2); 
function t(a) 
{ 
alert("[t(a)]a:" + a); 
} 
//结果: 
//[t(a)]a:1 
</script>

后记

定义javascript函数时,函数名是函数对象的标识,参数数量只是这个函数的属性。靠定义参数数量不同的函数实现重载是不行的。
调用函数时,js通过函数名找到对应的函数对象,然后根据函数定义时的参数,和表达式参数列表按顺序匹配,多余的参数舍去,不够的参数按undefined处理,然后执行函数代码。

所以定义函数时,通常把必选参数放在参数列表最前面,可选参数放在必选参数后面。

注意事项

一、上述八个实验的结果是经过360浏览器(版本/内核:6.3.1.142/21.0.1180.89)和火狐浏览器(版本:27.0.1)运行得出的。
二、上述八个实验是相互独立的,请分别单独运行以得到正确的结果。

Javascript 相关文章推荐
Zero Clipboard js+swf实现的复制功能使用方法
Mar 07 Javascript
JQuery Ajax通过Handler访问外部XML数据的代码
Jun 01 Javascript
jquery 弹出层注册页面等(asp.net后台)
Jun 17 Javascript
JS 进度条效果实现代码整理
May 21 Javascript
jQuery EasyUI API 中文文档 - Calendar日历使用
Oct 19 Javascript
JQuery-tableDnD 拖拽的基本使用介绍
Jul 04 Javascript
Javascript动态引用CSS文件的2种方法介绍
Jun 06 Javascript
jQuery实现查找最近父节点的方法
Jun 23 Javascript
微信小程序 动态的设置图片的高度和宽度详解及实例代码
Feb 24 Javascript
BootStrap Fileinput上传插件使用实例代码
Jul 28 Javascript
js实现鼠标跟随运动效果
Aug 02 Javascript
封装Vue Element的table表格组件的示例详解
Aug 19 Javascript
jquery禁用右键单击功能屏蔽F5刷新
Mar 17 #Javascript
jquery自动将form表单封装成json的具体实现
Mar 17 #Javascript
获取当前点击按钮的id用this.id实现
Mar 17 #Javascript
jquery如何根据值设置默认的选中项
Mar 17 #Javascript
jquery插件开发之实现md5插件
Mar 17 #Javascript
js对图片base64编码字符串进行解码并输出图像示例
Mar 17 #Javascript
javascript文件中引用依赖的js文件的方法
Mar 17 #Javascript
You might like
php学习之function的用法
2012/07/14 PHP
javascript  Error 对象 错误处理
2008/05/18 Javascript
如何确保JavaScript的执行顺序 之jQuery.html深度分析
2011/03/03 Javascript
JS模拟自动点击的简单实例
2013/08/08 Javascript
javascript简单实现图片预加载
2014/12/03 Javascript
JavaScript验证Email(3种方法)
2015/09/21 Javascript
使用jQuery处理AJAX请求的基础学习教程
2016/05/10 Javascript
jQuery文字横向滚动效果的实现代码
2016/05/31 Javascript
全面解析Javascript无限添加QQ好友原理
2016/06/15 Javascript
Javascript如何判断数据类型和数组类型
2016/06/22 Javascript
基于JavaScript实现树形下拉框
2016/08/10 Javascript
详解vue父子组件关于模态框状态的绑定方案
2019/06/05 Javascript
js如何实现元素曝光上报
2019/08/07 Javascript
如何在vue中使用jointjs过程解析
2020/05/29 Javascript
Python中Collection的使用小技巧
2014/08/18 Python
Python创建系统目录的方法
2015/03/11 Python
Scrapy-redis爬虫分布式爬取的分析和实现
2017/02/07 Python
Python实现的读取电脑硬件信息功能示例
2018/05/30 Python
利用Python将每日一句定时推送至微信的实现方法
2018/08/13 Python
python进阶之多线程对同一个全局变量的处理方法
2018/11/09 Python
解决matplotlib.pyplot在Jupyter notebook中不显示图像问题
2020/04/22 Python
Django框架获取form表单数据方式总结
2020/04/22 Python
Python绘图之柱形图绘制详解
2020/07/28 Python
详解python使用金山词霸的翻译功能(调试工具断点的使用)
2021/01/07 Python
英国泰坦旅游网站:全球陪同游览,邮轮和铁路旅行
2016/11/29 全球购物
斯德哥尔摩通票:Stockholm Pass
2018/01/09 全球购物
中文专业毕业生自荐信
2014/05/24 职场文书
护理目标管理责任书
2014/07/25 职场文书
大三学年自我鉴定范文(3篇)
2014/09/28 职场文书
2014年医院个人工作总结
2014/12/09 职场文书
幼儿园中班教师个人工作总结
2015/02/06 职场文书
2015年师德师风自我评价范文
2015/03/05 职场文书
汽车车尾标语大全
2015/08/11 职场文书
导游词之四川武侯祠
2019/10/21 职场文书
聊聊SpringBoot自动装配的魔力
2021/11/17 Java/Android
教你使用Ubuntu搭建DNS服务器
2022/09/23 Servers