javascript的解析执行顺序在各个浏览器中的不同

 javascript是一种解释型语言,它的执行是自上而下的。由于各个浏览器对它的理解有所差异,所以我们有必要深入理解js的执行顺序

简介 
 
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)运行得出的。 
二、上述八个实验是相互独立的,请分别单独运行以得到正确的结果。 

时间: 2024-12-24 21:25:12

javascript的解析执行顺序在各个浏览器中的不同的相关文章

javascript的解析执行顺序在各个浏览器中的不同_javascript技巧

简介 javascript是一种解释型语言,它的执行是自上而下的.但是各浏览器对于[自上而下]的理解是有细微差别的,而代码的上下游也就是程序流对于程序正确运行又是至关重要的.所以我们有必要深入理解js的执行顺序.为此,我设计了如下八个实验来获得最确切的结果. 实验 复制代码 代码如下: <script type="text/javascript"> //实验一: function t(a) { alert("[t(a)]a:" + a); } funct

探析浏览器执行JavaScript脚本加载与代码执行顺序_javascript技巧

本文主要基于向HTML页面引入JavaScript的几种方式,分析HTML中JavaScript脚本的执行顺序问题 1. 关于JavaScript脚本执行的阻塞性 JavaScript在浏览器中被解析和执行时具有阻塞的特性,也就是说,当JavaScript代码执行时,页面的解析.渲染以及其他资源的下载都要停下来等待脚本执行完毕①.这一点是没有争议的,并且在所有浏览器中的行为都是一致的,原因也不难理解:浏览器需要一个稳定的DOM结构,而JavaScript可能会修改DOM(改变DOM结构或修改某个

JavaScript执行顺序详细介绍_基础知识

之前从JavaScript引擎的解析机制来探索JavaScript的工作原理,下面我们以更形象的示例来说明JavaScript代码在页面中的执行顺序.如果说,JavaScript引擎的工作机制比较深奥是因为它属于底层行为,那么JavaScript代码执行顺序就比较形象了,因为我们可以直观感觉到这种执行顺序,当然JavaScript代码的执行顺序是比较复杂的,所以在深入JavaScript语言之前也有必要对其进行剖析.1.1  按HTML文档流顺序执行JavaScript代码首先,读者应该清楚,H

JavaScript语言精粹--执行环境及作用域,this

1.执行环境定义了变量或函数有权访问的其他数据,决定了他们各自的行为. 每个执行环境都有一个与之关联的变量对象,环境中定义的所有变量和函数都保存在这个对象中. 虽然我们无法访问,但是解析器在处理数据时会在后台调用它.   2.全局执行环境是最外围的一个执行环境,在浏览器中就是window对象. 全局变量销毁的时候只有当关闭网页或浏览器才会. 局部执行环境就是函数执行环境.   3.当代码在一个环境中执行的时候,会创建变量对象的一个作用域链. 作用域链的用途是保证对执行环境所有变量和函数的有权访问

JavaScript编写检测用户所使用的浏览器的代码示例_javascript技巧

能力检测在编写代码之前先检测特定浏览器的能力.例如,脚本在调用某个函数之前,可能要先检测该函数首付存在.这种检测方法将开发人员从考虑具体的浏览器类型和版本中解放出来,让他们把注意力集中到相应的能力是否存在上.能力检测无法精确地检测特定的浏览器和版本. 怪癖检测怪癖实际上是浏览器实现中存在的bug,例如早期的webkit中就存在一个怪癖,即它会再for-in循环中返回被隐藏的属性.怪癖检测通常涉及到运行一段代码,然后确定浏览器是否存在某个怪癖.由于怪癖检测无法精确地检测特定的浏览器和版本. 用户代

Javascript URI 解析介绍_javascript技巧

解析URI是一个有意思的东西,之前没有意识到,原来这东西也可以这么复杂. URI 在维基百科中对于URI的解释是这样子的: 复制代码 代码如下:  在计算机术语中,统一资源标识符(Uniform Resource Identifier,或URI)是一个用于标识某一互联网资源名称的字符串. 该种标识允许用户对网络中(一般指万维网)的资源通过特定的协议进行交互操作.URI由包括确定语法和相关协议的方案所定义. 引自网络上对于URI组成的解释,而这些可以在稍后对于URI的解析中看出来. URI一般由三

浏览器中因cookie设置HttpOnly标志引起的安全问题

1.简介如果cookie设置了HttpOnly标志,可以在发生XSS时避免JavaScript读取cookie,这也是HttpOnly被引入的原因.但这种方式能防住攻击者吗?HttpOnly标志可以 防止cookie被"读取", 那么能不能防止被"写"呢?答案是否定的,那么这 里面就有 文章可做了,因为已证明有些浏览器的HttpOnly标记可以被JavaScript写入覆盖,而这种覆盖可能被攻击者利用发动session fixation攻击.本文主题就是讨论这种技术

JavaScript 全面解析各种浏览器网页中的JS 执行顺序_javascript技巧

我们知道javaScript是一种解释型语言,他的执行是自上而下,但是各个浏览器对于至上而下的理解是有细微差别的,而代码的上下游也就是程序流又对于程序正确至关重要,所以我觉得有必要深入理解多个js块儿的执行顺序. 首先得知道有多少方法能把javaScript加入到页面中呢?常见下述的前2种,其实还有更多. 1.页面中直接引入外部js文件:<script src="my.js"></script> 2.页面中直接写如js片段<script>alert(

javascript的执行顺序

 JavaScript是一种描述型脚本语言,它不同于java或C#等编译性语言,它不需要进行编译成中间语言,而是由浏览器进行动态地解析与执行 如果你不能理解javaScript语言的运行机制,或者简单地说,你不能掌握javascript的执行顺序,那你就犹如伯乐驾驭不了千里马,让千里马脱缰而出,四处乱窜.   那么JavaScript是怎么来进行解析的吗?它的执行顺序又是如何的呢?在了解这些之前,我们先来认识几个重要的术语:   1.代码块 JavaScript中的代码块是指由<script>