`
justmiaotou
  • 浏览: 10374 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
文章分类
社区版块
存档分类

Javascript代码执行过程

阅读更多

本文摘录自李战老师《悟透Javascript》一书的部分章节,为适应博客发表作了一点点修改。

 

1) 预编译分析。

    JavaScript执行引擎将所有定义式函数直接创建为作用域上的函数变量,并将其值初始化为定义的函数代码逻辑,也就是为其建立了可调用的函数变量。 “var”定义的变量也会在这一步中创建起来,初始值为undefined

2) 开始解释执行代码。

JavaScript 执行引擎并非一行一行地分析和执行程序,而是一段一段地分析执行的。而且,在同一段程序的分析执行中,定义式的函数语句会被提取出来优先执行。函数定义执行完之后,才会按顺序执行其他语句代码。(同一段中的所有同名定义式函数都会被最后一个同名函数覆盖。)
   
当遇到对函数名或变量名的使用时,JavaScript执行引擎会首先在当前作用域查找函数或变量,如果没有就到上层作用域查找,依次类推。因此,在一个作用域中前面的语句引用后面语句定义的“var”变量时,该变量其实已经存在,只是初始值为undefined
   
函数在每次调用时都会产生一个子作用域,退出函数时,这个子作用域就消失,下次调用相同函数时又是另一个子作用域了。函数内调用函数,又产生一个作用域,随着函数调用的深入自然形成“作用域链”。

 

欢迎讨论。

 

分享到:
评论

相关推荐

    【JavaScript源代码】详解JavaScript中的执行上下文及调用堆栈.docx

     目录 一、执行上下文是什么二、执行上下文栈是什么三、执行上下文栈的过程细节(一)创建阶段(二)执行阶段 一、执行上下文是什么 二、执行上下文栈是什么 三、执行上下文栈的过程细节 (一)创建阶段(二)...

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

    JavaScript在浏览器中被解析和执行时具有阻塞的特性,也就是说,当JavaScript代码执行时,页面的解析、渲染以及其他资源的下载都要停下来等待脚本执行完毕①。这一点是没有争议的,并且在所有浏览器中的行为都是一致...

    【JavaScript源代码】详解JavaScript引擎V8执行流程.docx

    详解JavaScript引擎V8执行流程  目录 一、V8来源二、V8的服务对象三、V8的早期架构四、V8早期架构的缺陷五、V8的现有架构六、V8的词法分析和语法分析七、V8 AST抽象语法树八、字节码九、Turbofan 一、V8来源 二...

    JavaScript 代码压缩加密软件

    此外,很多程序辛辛苦苦的写出来的javascript代码却被别人随意的剽窃,实为憾事。本软件还可以通过对javascript的变量名称和过程名称进行编码,从而起到混淆ja代码的作用,保护您的劳动成功。 JS代码压缩,基本原理...

    调用栈:为什么JavaScript代码会出现栈溢出.docx

    "调用栈:为什么JavaScript代码会出现栈溢出" 在 JavaScript 中,调用栈是一种数据结构,用于管理函数调用关系。当我们编写 JavaScript 代码时,可能会遇到栈溢出的错误,这是因为 JavaScript 引擎使用调用栈来管理...

    轻量级攻击检测和溯源反制之道.pptx

    JavaScript代码执行流程是指JavaScript引擎对JavaScript代码的执行过程。该过程通常包括解释器、优化JIT引擎和非优化JIT引擎三个阶段。在解释器阶段,JavaScript引擎会将JavaScript代码解释成机器代码,而在优化JIT...

    JavaScript 代码编辑器 RunJs 1.12.0 x64 中文免费版.zip

    当然,编辑器确实具有一些人们可能期望的基本功能,例如语法突出显示和缩进,以及实时代码预览功能(也可以将其关闭以允许您手动执行代码)。 绝对有更多的东西会让您思考 尽管总体上很简单,但是编辑器确实提供了...

    夯实基础上篇-图解 JavaScript 执行机制.doc

    本文通过 9 个 demo 和 18 张图,详细地解释了 JavaScript 执行机制的过程。 变量提升(Hoisting) 变量提升是 JavaScript 中的一个重要概念,它是指在执行代码之前,变量和函数声明会被提升到执行上下文的顶部。...

    JavaScript完全自学宝典 源代码

    1.本书1~21章所附代码的运行环境 操作系统:Windows 2003、Windows XP Professional,或者Windows 2000 开发环境:UltraEdit12.10a、eclipse-jee-europa Web浏览器:Microsoft Internet Explorer 6.0及以上版本 ...

    javascript运行机制1

    在 JavaScript 代码执行时,首先创建一个全局执行上下文。全局执行上下文是一个特殊的执行上下文,它用于执行全局代码。 在这个阶段,变量和函数都是未初始化的。 二、变量赋值和函数创建 在执行阶段,变量赋值...

    逆向进阶,利用 AST 技术还原 JavaScript 混淆代码.doc

    代码生成是最后一步,将 AST 语法树转换成可执行代码即可,在转换之前,我们可以直接操作语法树,进行增删改查等操作。 Babel 是一个 JavaScript 编译器,也可以说是一个解析库,Babel 中文网:...

    【JavaScript源代码】node中http模块的使用及执行流程.docx

    node中http模块的使用及执行流程  在node中http有什么作用 http这个模块的职责就是帮你创建编写服务器 执行流程 1. 加载http模块 const http = require('http') 2. 使用http.createServer方法创建一个web...

    javascript逆向 猿人学 js混淆 回溯 逆向学习

    JavaScript逆向是指通过分析和理解经过混淆的JavaScript代码,以及对代码执行过程的回溯和逆向学习,来揭示代码的真实意图和功能。猿人学JS混淆是一种常见的JavaScript混淆技术,通过对代码进行重构、变量名替换、...

    JavaScript基础和实例代码

    1.4 如何引入JavaScript脚本代码 1.4.1 通过与标记对引入 1.4.2 通过标记的src属性引入 1.4.3 通过JavaScript伪URL引入 1.4.4 通过HTML文档事件处理程序引入 1.5 嵌入JavaScript脚本代码的位置 1.5.1 在与标记对之间...

    JavaScript执行顺序详细介绍

    如果说,JavaScript引擎的工作机制比较深奥是因为它属于底层行为,那么JavaScript代码执行顺序就比较形象了,因为我们可以直观感觉到这种执行顺序,当然JavaScript代码的执行顺序是比较复杂的,所以在深入JavaScript...

    JavaScript异步执行辅助工具ocSteps.zip

    任务链是动态的,可以在执行过程中向任务链添加 step ,这是 ocSteps 和其他流行的异步操作库的主要区别(例如 Step, Async.js):不是提供各种规则来定义执行顺序,而是在任务链的执行过程中逐步定义任务链。...

    深入理解JavaScript执行上下文、函数堆栈、提升的概念.pdf

    详细讲解javascript中执行上下文、函数堆栈、变量提升的原理,对代码解析运行过程有更深层的理解

    探讨JavaScript语句的执行过程

    如果通过脚本标签[removed]的src属性来引入外部.js文件,那么它也将按照其语句出现的顺序来执行,而且执行过程是文档加载的一部分。不会因为是外部js文件而延期执行。 2、预编译和执行顺序的关系 首先看如下这段代码...

    具有时间多样性的JavaScript代码保护方法 (2015年)

    针对现有JavaScript代码保护方法难以抵御动态分析且抗累积攻击效果差的问题,提出了一种具有时间多样性的JavaScript代码保护(TDJSP)方法。首先,通过程序多样化处理和路径空间模糊化,使JavaScript程序在执行时...

    疯狂HTML 5+CSS 3+JavaScript讲义(第2版)+源代码

    15.3 事件处理函数的执行环境 505 15.4 事件类型 521 15.5 本章小结 534 第16章 本地存储与离线应用 535 16.1 Web Storage 536 16.2 Indexed数据库API 545 16.3 离线应用 564 16.4 本章小结 571 第17章 ...

Global site tag (gtag.js) - Google Analytics