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 相关文章推荐
JavaScript Tips 使用DocumentFragment加快DOM渲染速度
Jun 28 Javascript
一些javascript一些题目的解析
Dec 25 Javascript
jQuery 滑动方法slideDown向下滑动元素
Jan 16 Javascript
JS实现图片产生波纹一样flash效果的方法
Feb 27 Javascript
angularjs表格ng-table使用备忘录
Mar 09 Javascript
bootstrap datetimepicker日期插件使用方法
Jan 13 Javascript
AngularJS Select(选择框)使用详解
Jan 18 Javascript
JavaScript html5利用FileReader实现上传功能
Mar 27 Javascript
微信小程序 跳转方式总结
Apr 20 Javascript
node+koa2+mysql+bootstrap搭建一个前端论坛
May 06 Javascript
详解性能更优越的小程序图片懒加载方式
Jul 18 Javascript
详解vue 自定义组件使用v-model 及探究其中原理
Oct 11 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自动更新新闻DIY
2006/10/09 PHP
PHP实现手机归属地查询API接口实现代码
2012/08/27 PHP
PHP实现设计模式中的抽象工厂模式详解
2014/10/11 PHP
PHP新特性之字节码缓存和内置服务器
2017/08/11 PHP
php之可变函数的实例详解
2017/09/13 PHP
js 操作符实例代码
2009/10/24 Javascript
IE6下focus与blur错乱的解决方案
2011/07/31 Javascript
IE6-IE9中tbody的innerHTML不能赋值的解决方法
2014/09/26 Javascript
jquery中键盘事件小结
2016/02/24 Javascript
javascript实现方法调用与方法触发小结
2016/03/26 Javascript
分享10个优化代码的CSS和JavaScript工具
2016/05/11 Javascript
js学习阶段总结(必看篇)
2016/06/16 Javascript
前端面试知识点锦集(JavaScript篇)
2016/12/28 Javascript
jquery单击文字或图片内容放大并居中显示
2017/06/23 jQuery
Vue组件之自定义事件的功能图解
2018/02/01 Javascript
JavaScript生成指定范围随机数和随机序列的方法
2018/05/05 Javascript
微信小程序 自定义弹窗实现过程(附代码)
2019/12/05 Javascript
详解ES6 扩展运算符的使用与注意事项
2020/11/12 Javascript
Python的Django框架中TEMPLATES项的设置教程
2015/05/29 Python
python 的列表遍历删除实现代码
2020/04/12 Python
python爬虫入门教程--利用requests构建知乎API(三)
2017/05/25 Python
使用python实现tcp自动重连
2017/07/02 Python
python如何拆分含有多种分隔符的字符串
2018/03/20 Python
将pandas.dataframe的数据写入到文件中的方法
2018/12/07 Python
Python3中的最大整数和最大浮点数实例
2019/07/09 Python
基于django ManyToMany 使用的注意事项详解
2019/08/09 Python
Selenium获取登录Cookies并添加Cookies自动登录的方法
2020/12/04 Python
澳大利亚珠宝商:Shiels
2019/10/06 全球购物
戴尔新加坡官网:Dell Singapore
2020/12/13 全球购物
生产部统计员岗位职责
2014/01/05 职场文书
个人欠款协议书范本2014
2014/11/02 职场文书
详解MySQL集群搭建
2021/05/26 MySQL
小程序wx.getUserProfile接口的具体使用
2021/06/02 Javascript
解决使用了nginx获取IP地址都是127.0.0.1 的问题
2021/09/25 Servers
Windows Server 2012 R2 磁盘分区教程
2022/04/29 Servers
html用代码制作虚线框怎么做? dw制作虚线圆圈的技巧
2022/12/24 HTML / CSS