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 相关文章推荐
推荐11款jQuery开发的复选框和单选框美化插件
Aug 02 Javascript
Jquery easyUI 更新行示例
Mar 06 Javascript
jQuery后代选择器用法实例
Dec 23 Javascript
javascript类型系统_正则表达式RegExp类型详解
Jun 24 Javascript
Bootstrap表单布局样式源代码
Jul 04 Javascript
JS实现自动阅读单词(有道单词本添加功能)
Nov 14 Javascript
JS前端加密算法示例
Dec 22 Javascript
jQuery实现的下雪动画效果示例【附源码下载】
Feb 02 jQuery
vue-router 源码之实现一个简单的 vue-router
Jul 02 Javascript
react实现换肤功能的示例代码
Aug 14 Javascript
微信小程序发送短信验证码完整实例
Jan 07 Javascript
vue中配置scss全局变量的步骤
Dec 28 Vue.js
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页面执行时间,数据库读写次数,函数调用次数等(THINKphp)
2013/06/03 PHP
php mongodb操作类 带几个简单的例子
2016/08/25 PHP
PHP连接MySQL数据库并以json格式输出
2018/05/21 PHP
IE7提供XMLHttpRequest对象为兼容
2007/03/08 Javascript
JavaScript 继承的实现
2009/07/09 Javascript
JS下拉缓冲菜单示例代码
2013/08/30 Javascript
JS 弹出层 定位至屏幕居中示例
2014/05/21 Javascript
JS处理json日期格式化问题
2015/10/01 Javascript
基于javascript实现根据身份证号码识别性别和年龄
2016/01/22 Javascript
vue监听滚动事件实现滚动监听
2017/04/11 Javascript
原生javascript AJAX 三级联动的实现代码
2018/05/04 Javascript
Angular请求防抖处理第一次请求失效问题
2019/05/17 Javascript
基于ts的动态接口数据配置的详解
2019/12/18 Javascript
openlayers实现地图弹窗
2020/09/25 Javascript
js 压缩图片的示例(只缩小体积,不更改图片尺寸)
2020/10/21 Javascript
antd form表单数据回显操作
2020/11/02 Javascript
讲解python参数和作用域的使用
2013/11/01 Python
浅谈Python 中整型对象的存储问题
2016/05/16 Python
Python Django使用forms来实现评论功能
2016/08/17 Python
Python编程实现双链表,栈,队列及二叉树的方法示例
2017/11/01 Python
Python图像处理之gif动态图的解析与合成操作详解
2018/12/30 Python
python 表格打印代码实例解析
2019/10/12 Python
python、PyTorch图像读取与numpy转换实例
2020/01/13 Python
Pandas时间序列:时期(period)及其算术运算详解
2020/02/25 Python
详解python的xlwings库读写excel操作总结
2021/02/26 Python
英国在线自行车商店:Evans Cycles
2016/09/26 全球购物
欧洲品牌瓷器餐具网上商店:Porzellantreff.de
2018/04/04 全球购物
如何掌握自荐信格式呢
2013/11/19 职场文书
就业自荐书
2013/12/05 职场文书
幼儿园亲子活动方案
2014/01/29 职场文书
学习党的群众路线教育实践活动心得体会
2014/03/01 职场文书
优秀大学生求职自荐信范文
2014/04/19 职场文书
电气工程及其自动化专业求职信
2014/06/23 职场文书
幼儿园六一活动总结
2014/08/27 职场文书
公司财务人员岗位职责
2015/04/14 职场文书
一次Mysql update sql不当引起的生产故障记录
2022/04/01 MySQL