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 相关文章推荐
Node.js实现Excel转JSON
Apr 24 Javascript
JS实现自动变化的导航菜单效果代码
Sep 09 Javascript
javascript精确统计网站访问量实例代码
Dec 19 Javascript
javascript如何实现360度全景照片问题汇总
Apr 04 Javascript
Web Uploader文件上传插件使用详解
May 10 Javascript
JS判断form内所有表单是否为空的简单实例
Sep 09 Javascript
Vue.js结合bootstrap实现分页控件
Mar 10 Javascript
微信小程序获取手机网络状态的方法【附源码下载】
Dec 08 Javascript
JavaScript简单实现关键字文本搜索高亮显示功能示例
Jul 25 Javascript
vue生命周期与钩子函数简单示例
Mar 13 Javascript
JS中多层次排序算法的实现代码
Jan 06 Javascript
36个正则表达式(开发效率提高80%)
Nov 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
php+ajax+json 详解及实例代码
2016/12/12 PHP
PHP实现简易计算器功能
2020/08/28 PHP
Autocomplete Textbox Example javascript实现自动完成成功
2007/08/17 Javascript
checkbox 复选框不能为空
2009/07/11 Javascript
javascript白色简洁计算器
2015/05/04 Javascript
jQuery中$this和$(this)的区别介绍(一看就懂)
2015/07/06 Javascript
JavaScript判断表单中多选框checkbox选中个数的方法
2015/08/17 Javascript
jquery获取img的src值的简单实例
2016/05/17 Javascript
Javascript 数组去重的方法(四种)详解及实例代码
2016/11/24 Javascript
利用imgareaselect辅助后台实现图片上传裁剪
2017/03/02 Javascript
使用jQuery,Angular实现登录界面验证码详解
2017/04/27 jQuery
jQuery 中msgTips 顶部弹窗效果实现代码
2017/08/14 jQuery
浅谈在fetch方法中添加header后遇到的预检请求问题
2017/08/31 Javascript
js的新生代垃圾回收知识点总结
2019/08/22 Javascript
[03:35]2018年度DOTA2最佳辅助位选手5号位-完美盛典
2018/12/17 DOTA
Python实现Sqlite将字段当做索引进行查询的方法
2016/07/21 Python
10 行Python 代码实现 AI 目标检测技术【推荐】
2019/06/14 Python
Python图像处理模块ndimage用法实例分析
2019/09/05 Python
python将字符串转变成dict格式的实现
2019/11/18 Python
Python pandas RFM模型应用实例详解
2019/11/20 Python
flask 框架操作MySQL数据库简单示例
2020/02/02 Python
在Python中使用K-Means聚类和PCA主成分分析进行图像压缩
2020/04/10 Python
园林设计师自荐信
2013/11/18 职场文书
学生拾金不昧表扬信
2014/01/21 职场文书
仓库管理制度
2014/01/21 职场文书
学校消防演习方案
2014/02/19 职场文书
2014年乡镇植树节活动方案
2014/02/28 职场文书
信用社竞聘演讲稿
2014/05/16 职场文书
海洋科学专业求职信
2014/08/10 职场文书
初中中等生评语
2014/12/29 职场文书
2015年学校管理工作总结
2015/07/20 职场文书
《水上飞机》教学反思
2016/02/20 职场文书
MySQL索引知识的一些小妙招总结
2021/05/10 MySQL
python3操作redis实现List列表实例
2021/08/04 Python
深入理解CSS 中 transform matrix矩阵变换问题
2021/08/30 HTML / CSS
vue二维数组循环嵌套方式 循环数组、循环嵌套数组
2022/04/24 Vue.js