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里使用Dom操作Xml
Jan 22 Javascript
jQuery创建自己的插件(自定义插件)的方法
Jun 10 Javascript
JavaScript移除数组内重复元素的方法
Mar 18 Javascript
使用javascript提交form表单方法汇总
Jun 25 Javascript
javascript解决IE6下hover问题的方法
Jul 28 Javascript
js实现简洁的TAB滑动门效果代码
Sep 06 Javascript
第四篇Bootstrap网格系统偏移列和嵌套列
Jun 21 Javascript
jQuery插件FusionWidgets实现的Cylinder图效果示例【附demo源码】
Mar 23 jQuery
详解webpack2+React 实例demo
Sep 11 Javascript
Vue Router的懒加载路径的解决方法
Jun 21 Javascript
vue滚动tab跟随切换效果
Jun 29 Javascript
JavaScript 常见的继承方式汇总
Sep 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
用来解析.htpasswd文件的PHP类
2012/09/05 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(九)
2014/06/24 PHP
浅谈PHP中foreach/in_array的使用
2015/11/02 PHP
利用php-cli和任务计划实现刷新token功能的方法
2017/05/03 PHP
js 关于=+与+=日期函数使用说明(赋值运算符)
2011/11/15 Javascript
jquery toolbar与网页浮动工具条具体实现代码
2014/01/12 Javascript
jquery实现瀑布流效果分享
2014/03/26 Javascript
node.js+Ajax实现获取HTTP服务器返回数据
2014/11/26 Javascript
jQuery中:focus选择器用法实例
2014/12/30 Javascript
javascript模拟命名空间
2015/04/17 Javascript
AngularJS实现用户登录状态判断的方法(Model添加拦截过滤器,路由增加限制)
2016/12/12 Javascript
angular forEach方法遍历源码解读
2017/01/25 Javascript
JS实现求5的阶乘示例
2019/01/21 Javascript
vue文件运行的方法教学
2019/02/12 Javascript
jQuery中使用validate插件校验表单功能
2019/05/24 jQuery
vue-cli基础配置及webpack配置修改的完整步骤
2019/10/20 Javascript
利用Vue的v-for和v-bind实现列表颜色切换
2020/07/17 Javascript
详解vue-cli项目在IE浏览器打开报错解决方法
2020/12/10 Vue.js
Python RuntimeError: thread.__init__() not called解决方法
2015/04/28 Python
如何基于Python + requests实现发送HTTP请求
2020/01/13 Python
Python中的__init__作用是什么
2020/06/09 Python
Pycharm创建文件时自动生成文件头注释(自定义设置作者日期)
2020/11/24 Python
python uuid生成唯一id或str的最简单案例
2021/01/13 Python
加拿大最大的箱包及旅游配件零售商:Bentley Leathers
2017/07/19 全球购物
eHarmony英国:全球领先的认真恋爱约会平台之一
2020/11/16 全球购物
专科应届生求职信
2013/11/24 职场文书
一个大学生十年的职业规划
2014/01/17 职场文书
运动会广播稿80字
2014/01/23 职场文书
蓝颜请假条
2014/04/11 职场文书
党的群众路线对照检查材料
2014/08/27 职场文书
教师群众路线教育实践活动学习笔记
2014/11/05 职场文书
小平您好观后感
2015/06/09 职场文书
农村婚礼司仪主持词
2015/06/29 职场文书
CSS3实现的文字弹出特效
2021/04/16 HTML / CSS
python自动计算图像数据集的RGB均值
2021/06/18 Python
Python实现聚类K-means算法详解
2022/07/15 Python