浅析js的执行顺序

javascript是一种描述型的脚本语言,是一种解析语言,由浏览器动态解析,不同种类的浏览器不同版本的浏览器对于js的解析有着微小的差别,不同浏览器的js解析引擎效率也有高低,下面来给大家分析一下js的执行顺序,希望对大家能有所帮助,欢迎大家交流指正。

首先js的执行过程分为两大部分,第一部分,解析过程,也称预编译期。主要工作就是对于js的代码中声明的所有变量和函数进行预处理。需要注意的是,再此进行处理的仅是声明函数,而对于变量的处理仅是声明,并开辟出一块内存空间,不进行复制操作。

第二部分,执行过程,在执行过程中,浏览器的js引擎对于每个代码块进行顺序执行,如果有外部引用的js,且js有相互关联,此时就要注意,不同js的引入顺序,如果声明代码块在调用代码块后调用则将不会达到预期的效果。

  总结来说,js的执行分为两部分,解析过程和执行过程。解析时按照代码块,一段一段进行解析,执行时按照代码块顺序逐行执行,解析一个代码块,执行一个代码块。因为是解释性语言,所以js如果在解析过程有错误,则不会提示,也可以理解为js不会出现编译错误,但如果出现了运行时错误,出现错误一下的所有js代码将不会继续执行。

下面通过一段代码,举例给大家说明执行的过程。

现象1.通过第一部分js调用第二部分的a函数,结果是什么结果都未输出,说明了js在发生运行错误时,本块的余下代码将不会执行。

现象2.第二段代码函数调用在定义之前,但是却输出了“第二段js”,结果说明了在预编译期,引擎为js定义好的函数进行声明,并开辟了内存空间。

现象3.第三段js,alert(word2)输出undefined,结果说明js在预编译期,只是对变量进行,声明,开辟内存空间,并不赋值。

现象4.b函数没有顺利调用,因为b函数声明方式的原因,js并未给其赋值。

现象5.button能顺利提示go,并不能提示出come,结果说明,在发生运行错误后的本块js代码全都不执行。

  

时间: 2024-08-01 07:46:58

浅析js的执行顺序的相关文章

Javascript 中js语句执行顺序

如果我们把嵌入在HTML中的<script> js coding </script>看做Js代码块(实际上Js没有代码块的意义一说,如果真要看成代码块那也应该是按函数块来划分)的话,下面就是Js代码执行顺序: 这里转载 Js执行顺序总结归纳  请参考  http://www.3lian.com/edu/2014/04-07/139469.html  step 1.  读入第一个代码块<script> js coding </script>,按HTML中声明的

关于js事件执行顺序

关于js事件执行顺序小技巧 js事件执行顺序是js中一个老生常谈的一个话题, 聊这个话题之前我们先谈谈怎么给页面元素绑定我们需要的事件 1.给页面元素绑定事件 a)直接在元素上面加上需要绑定的事件,如 <button type="button" onclick="console.log('111')"></button> 结果如下: 此方法不建议使用,有两方面的原因, 1)此方法绑定的方法必须为一个全局的方法,而通常我们需要绑定的方法都是针对

ASP.NET相关事件及JS的执行顺序

实验代码: ASPX: <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="Ajax.WebForm1" %> <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"><head run

关于js预编译以及js文件执行顺序的几个问题。

关于js的执行原理,除去html页面中直接添加的代码,js代码的放置可以分为两类. //情形a           <script type="text/javascript" src="xxx.js"$amp;>amp;$lt;/script>           //情形b            <script type="text/javascript">           code......       

浅析JS异步执行机制

前言 JS异步执行机制具有非常重要的地位,尤其体现在回调函数和事件等方面.本文将针对JS异步执行机制进行一个简单的分析. 从一份代码讲起 下面是两个经典的JS定时执行函数,这两个函数的区别相信对JS有一定基础的同学是十分清楚的.timeout仅仅只会执行一次,而interval则会执行多次. setTimeout(function (args) { console.log('timeout') }, 1000); setInterval(function (args) { console.log

js的执行顺序

js是顺序执行的,但是在一个<script></script>标签中,后面的函数会预加载.如: <script type="text/javascript"> try{ fun(); }catch(e){ alert("error"); } function fun(){ alert("houhou"); } </script>输出为 houhou 如果是这样: <script type=&q

关于js代码执行顺序

上网查了一下关于这个方面的资料,大部分都是关于两个script标签中的js代码和变量以及函数提升方面的知识. 1.两个script标签 <script> alert("我是代码块一"); alert(test); //undefined var test = "str1"l </script> <script> alert("我是代码块二"); alert(test); //str1 </script&g

js事件执行顺序

js和jsp的执行顺序

jsp页面中的代码执行顺序一直很不清楚,最近把这个给理了理 1.js脚本执行顺序优先于html标签 不明白的试试执行这个页面 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html> <head> <meta http-equi