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 相关文章推荐
用dom+xhtml+css制作的一个相册效果代码打包下载
Jan 24 Javascript
提交表单时执行func方法实现代码
Mar 17 Javascript
jQuery关于导航条背景切换效果实现示例
Sep 04 Javascript
js图片自动轮播代码分享(js图片轮播)
May 06 Javascript
jQuery简单实现仿京东分类导航层效果
Jun 07 Javascript
轻松5句话解决JavaScript的作用域
Jul 15 Javascript
详解jQuery的Cookie插件
Nov 23 Javascript
jQuery实现标签页效果实战(4)
Feb 08 Javascript
vue使用 better-scroll的参数和方法详解
Jan 25 Javascript
Vue实现6位数密码效果
Aug 18 Javascript
在vue-cli 3中给stylus、sass样式传入共享的全局变量
Aug 12 Javascript
JS删除对象中某一属性案例详解
Sep 08 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微信公众平台开发(三)订阅事件处理
2016/12/06 PHP
PHP7如何开启Opcode打造强悍性能详解
2018/05/11 PHP
php实现微信公众平台发红包功能
2018/06/14 PHP
Yii 框架使用Forms操作详解
2020/05/18 PHP
isArray()函数(JavaScript中对象类型判断的几种方法)
2009/11/26 Javascript
js判断undefined类型,undefined,null, 的区别详细解析
2013/12/16 Javascript
JavaScript的strict模式与with关键字介绍
2014/02/08 Javascript
基于socket.io和node.js搭建即时通信系统
2014/07/30 Javascript
jQuery中parent()方法用法实例
2015/01/07 Javascript
JS验证 只能输入小数点,数字,负数的实现方法
2016/10/07 Javascript
js实现显示手机号码效果
2017/03/09 Javascript
详解使用vscode+es6写nodejs服务端调试配置
2017/09/21 NodeJs
Vue-cli配置打包文件本地使用的教程图解
2018/08/02 Javascript
layui 监听表格复选框选中值的方法
2018/08/15 Javascript
小程序视频或音频自定义可拖拽进度条的示例代码
2018/09/30 Javascript
用Nodejs实现在终端中炒股的实现
2020/10/18 NodeJs
基于python的Tkinter实现一个简易计算器
2015/12/31 Python
python的unittest测试类代码实例
2017/12/07 Python
python监测当前联网状态并连接的实例
2018/12/18 Python
Python+numpy实现矩阵的行列扩展方式
2019/11/29 Python
tensorflow 模型权重导出实例
2020/01/24 Python
python 一维二维插值实例
2020/04/22 Python
python Scrapy爬虫框架的使用
2021/01/21 Python
浅析HTML5中的download属性使用
2019/03/13 HTML / CSS
Perry Ellis官网:美国男士品味服装
2016/12/09 全球购物
师范生实习个人的自我评价
2013/09/28 职场文书
物流专业求职计划书
2014/01/10 职场文书
创业计划书模版
2014/02/05 职场文书
党员演讲稿
2014/09/04 职场文书
医德医风自我评价
2014/09/19 职场文书
销售内勤岗位职责
2015/02/10 职场文书
社区法制宣传月活动总结
2015/05/07 职场文书
社会实践心得体会范文
2016/01/14 职场文书
2019事业单位个人工作总结范文
2019/08/26 职场文书
MySQL REVOKE实现删除用户权限
2021/06/18 MySQL
Java数据结构之链表相关知识总结
2021/06/18 Java/Android