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 相关文章推荐
用正则表达式 动态创建/增加css style script 兼容IE firefox
Mar 10 Javascript
JavaScript QueryString解析类代码
Jan 17 Javascript
JQuery循环滚动图片代码
Dec 08 Javascript
Javascript学习笔记之相等符号与严格相等符号
Nov 23 Javascript
使用jquery菜单插件HoverTree仿京东无限级菜单
Dec 18 Javascript
AngularJS表单编辑提交功能实例
Feb 13 Javascript
实例讲解JavaScript的Backbone.js框架中的View视图
May 05 Javascript
jQuery获取访问者IP地址的方法(基于新浪API与QQ查询接口)
May 25 Javascript
js 转义字符及URI编码详解
Feb 28 Javascript
layui 弹出层回调获取弹出层数据的例子
Sep 02 Javascript
leaflet加载geojson叠加显示功能代码
Feb 21 Javascript
解决vue cli4升级sass-loader(v8)后报错问题
Jul 30 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常用Stream函数集介绍
2013/06/24 PHP
PHP进程通信基础之信号
2017/02/19 PHP
PHP 序列化和反序列化函数实例详解
2020/07/18 PHP
jQuery制作仿腾讯web qq用户体验桌面
2013/08/20 Javascript
jQuery设置div一直在页面顶部显示的方法
2013/10/24 Javascript
jquery实现图片灯箱明暗的遮罩效果
2013/11/15 Javascript
解决window.opener=null;window.close(),只支持IE6不支持IE7,IE8的问题
2014/01/14 Javascript
浅谈jQuery中对象遍历.eq().first().last().slice()方法
2014/11/26 Javascript
jQuery分组选择器用法实例
2014/12/23 Javascript
动态加载jQuery的两种方法实例分析
2015/07/17 Javascript
适用于javascript开发者的Processing.js入门教程
2016/02/24 Javascript
jQuery Easyui DataGrid点击某个单元格即进入编辑状态焦点移开后保存数据
2016/08/15 Javascript
JavaScript优化以及前段开发小技巧
2017/02/02 Javascript
Thinkjs3新手入门之如何使用静态资源目录
2017/12/06 Javascript
文章或博客自动生成章节目录索引(支持三级)的实现代码
2020/05/10 Javascript
解决vue单页面 回退页面 keeplive 缓存问题
2020/07/22 Javascript
原生js实现拖拽移动与缩放效果
2020/08/24 Javascript
详解node.js创建一个web服务器(Server)的详细步骤
2021/01/15 Javascript
Python单元测试框架unittest简明使用实例
2015/04/13 Python
Python生成随机密码的方法
2017/06/16 Python
Python自动抢红包教程详解
2019/06/11 Python
python 批量解压压缩文件的实例代码
2019/06/27 Python
python图形开发GUI库pyqt5的详细使用方法及各控件的属性与方法
2020/02/14 Python
浅谈Pytorch torch.optim优化器个性化的使用
2020/02/20 Python
解决Jupyter Notebook使用parser.parse_args出现错误问题
2020/04/20 Python
pycharm远程连接服务器并配置python interpreter的方法
2020/12/23 Python
使用OpenCV实现人脸图像卡通化的示例代码
2021/01/15 Python
东南亚冒险旅行与活动:Adventoro
2019/10/16 全球购物
幼儿教育感言
2014/02/05 职场文书
珍惜水资源建议书
2014/03/12 职场文书
中学生检讨书1000字
2014/10/28 职场文书
微信搭讪开场白
2015/05/28 职场文书
高中政治教师教学反思
2016/02/23 职场文书
Python中OpenCV实现查找轮廓的实例
2021/06/08 Python
python在package下继续嵌套一个package
2022/04/14 Python
Nginx如何获取自定义请求header头和URL参数详解
2022/07/23 Servers