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 相关文章推荐
jQuery easyui datagrid动态查询数据实例讲解
Feb 26 Javascript
JavaScript数组迭代器实例分析
Jun 09 Javascript
jquery-tips悬浮提示插件分享
Jul 31 Javascript
Jquery效果大全之制作电脑健康体检得分特效附源码下载
Nov 02 Javascript
JS Ajax请求如何防止重复提交
Jun 13 Javascript
JS中的==运算: [''] == false —&gt;true
Jul 24 Javascript
AngularJS基础 ng-selected 指令简单示例
Aug 03 Javascript
jQuery中的insertBefore(),insertAfter(),after(),before()区别介绍
Sep 01 Javascript
在JSP中如何实现MD5加密的方法
Nov 02 Javascript
linux 后台运行node服务指令方法
May 23 Javascript
angularJs中跳转到指定的锚点实例($anchorScroll)
Aug 31 Javascript
javascript设计模式 ? 解释器模式原理与用法实例分析
Apr 17 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
深入解析phpCB批量转换的代码示例
2013/06/27 PHP
PHP图像处理类库MagickWand用法实例分析
2015/05/21 PHP
php表单文件iframe异步上传实例讲解
2017/07/26 PHP
在chrome中window.onload事件的一些问题
2010/03/01 Javascript
ASP.NET中基于JQUERY的高性能的TreeView补充
2011/02/23 Javascript
纯js简单日历实现代码
2013/10/05 Javascript
通过JS来判断页面控件是否获取焦点
2014/01/03 Javascript
JS扩展方法实例分析
2015/04/15 Javascript
js日期插件dateHelp获取本月、三个月、今年的日期
2016/03/07 Javascript
JS简单实现仿百度控制台输出信息效果
2016/09/04 Javascript
javascript稀疏数组(sparse array)和密集数组用法分析
2016/12/28 Javascript
JavaScript实现浅拷贝与深拷贝的方法分析
2018/07/05 Javascript
解决Vue开发中对话框被遮罩层挡住的问题
2018/11/26 Javascript
Vue.Draggable拖拽功能的配置使用方法
2020/07/29 Javascript
vue-router传参用法详解
2019/01/19 Javascript
layer 关闭指定弹出层的例子
2019/09/25 Javascript
Jquery+javascript实现支付网页数字键盘
2020/12/21 jQuery
[44:15]国士无双DOTA2 6.82版本详解(上)
2014/09/28 DOTA
python写的一个squid访问日志分析的小程序
2014/09/17 Python
Python使用urllib模块的urlopen超时问题解决方法
2014/11/08 Python
python中快速进行多个字符替换的方法小结
2016/12/15 Python
Pycharm+Scrapy安装并且初始化项目的方法
2019/01/15 Python
python创建学生管理系统
2019/11/22 Python
Pandas实现dataframe和np.array的相互转换
2019/11/30 Python
使用python远程操作linux过程解析
2019/12/04 Python
PyCharm 在Windows的有用快捷键详解
2020/04/07 Python
详解用 python-docx 创建浮动图片
2021/01/24 Python
HTML5标签使用方法详解
2015/11/27 HTML / CSS
Eagle Eyes Optics鹰眼光学:高性能太阳镜
2018/12/07 全球购物
MYPROTEIN澳大利亚官方网站:欧洲运动营养品牌
2019/06/26 全球购物
Viking Direct爱尔兰:办公用品和家具
2019/11/21 全球购物
幼儿园园长自我鉴定
2013/10/22 职场文书
九年级语文教学反思
2014/02/04 职场文书
新年团拜会主持词
2014/04/02 职场文书
2014年服装销售工作总结
2014/11/27 职场文书
2019年新郎保证书3篇
2019/10/17 职场文书