你了解JavaScript的js运行三部曲吗

当浏览器加载一个包含JavaScript代码的网页时,JavaScript代码的执行流程一般会遵循以下三个步骤:

1. 解析代码

浏览器首先会将包含JavaScript代码的网页进行解析,在这个过程中,会对JavaScript代码进行词法分析和语法分析。

  • 词法分析:JavaScript代码中包含了各种不同类型的词汇单元,例如关键字、标识符、操作符等等,词法分析的作用就是将代码中的每一个词汇单元都进行分词,并给每个词汇单元打上相应的类型标记。
  • 语法分析:语法分析的主要作用就是根据词法分析的结果,将代码转化为语法树,检查代码是否符合语法规范。

2. 创建执行上下文

执行上下文(Execution Context),简称上下文,是JavaScript代码执行时的一个抽象概念。每当JavaScript代码执行时,都会创建一个上下文对象,用于存储代码执行期间的各种信息,例如当前代码的运行状态、变量、函数等等。创建上下文的过程包含了以下几个步骤:

  • 创建变量对象:在上下文被创建时,会首先创建一个变量对象(Variable Object),用于存储当前上下文中定义的变量和函数声明。
  • 确定this指向:this是JavaScript的一个关键字,它指向当前执行函数的执行上下文,this指向的上下文在调用函数时会动态确定,例如在一个对象方法中,this指向该对象本身。
  • 创建作用域链:JavaScript是一门词法作用域的编程语言,作用域链用于解析变量的访问权限,创建作用域链的过程包含了当前上下文嵌套的所有父级上下文。
  • 确定外部引用:JavaScript代码中经常会有一些外部的引用,例如闭包、eval等等,确定这些外部引用是关键之一。

3. 执行代码

最后,当上下文创建完成后,就可以执行JavaScript代码了。在执行的过程中,JavaScript引擎会先按照语法树的结构逐条执行语句,期间还会有大量的操作,例如函数调用、读写变量等等。

代码的执行过程受到许多因素的影响,例如函数调用栈、事件循环等等。如果代码中存在异步操作,例如setTimeout、Promise等等,则会被加入到事件队列中,等待当前执行的代码全部完成后再执行。

以下示例展示了一个简单的JavaScript代码,演示了解析、创建上下文以及执行三个步骤:

console.log("Start");

function multiply(a, b) {
  return a * b;
}

const result = multiply(3, 4);

console.log(result);

console.log("End");

输出结果为:

Start
12
End

在执行的过程中,JavaScript引擎执行了以下操作:

  1. 解析函数和变量声明,创建上下文对象;
  2. 执行console.log("Start"), 输出 "Start";
  3. 执行multiply(3, 4)函数,返回12;
  4. 将返回结果赋值给result变量;
  5. 执行console.log(result),输出12;
  6. 执行console.log("End"), 输出"End"。

除此之外,由于简单的代码没有进行异步操作,没有涉及到事件队列和事件循环的相关内容。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:你了解JavaScript的js运行三部曲吗 - Python技术站

(0)
上一篇 2023年5月18日
下一篇 2023年5月18日

相关文章

  • 详解Angular操作cookies方法

    以下是详解Angular操作cookies方法的完整攻略: 1. 什么是cookies Cookies 是指在浏览器中存储小型文本数据的一种机制,它们通常用于跟踪用户、记住用户的偏好设置等功能。 2. 在Angular中使用cookies 通常在Angular中使用第三方库来操作cookies。这里介绍两个常用的库: ngx-cookie-service n…

    JavaScript 2023年6月11日
    00
  • js实现左右两侧浮动广告

    下面是关于“js实现左右两侧浮动广告”的完整攻略。 实现思路 我们首先需要确定广告层的定位方式,一般采用 position: fixed 来实现固定的效果。然后利用 JS 计算浏览器窗口的宽度,以及广告层的宽度,计算出广告层到浏览器窗口两侧的距离,以此确定广告层的位置。接着,我们需要监听浏览器窗口的 scroll 和 resize 事件,根据滚动的位置和窗口…

    JavaScript 2023年6月11日
    00
  • JS面向对象编程之对象使用分析

    关于JS面向对象编程之对象使用分析,我为您提供如下完整攻略: 什么是对象 首先,我们需要了解对象的概念和基本特征。对象是一种复合数据类型,它将各种数据结构封装在一起,表示某一个东西。对象的每个属性都有一个键(或者说叫属性名)和值,键可以是字符串或者符号,值可以是任意数据类型,包括基本数据类型、对象、函数等。对象可以通过字面量、构造函数和对象实例三种方式创建。…

    JavaScript 2023年5月27日
    00
  • js定义类的方法示例【ES5与ES6】

    下面是关于“js定义类的方法示例【ES5与ES6】”的完整攻略。 什么是类 在Javascript中,类是一种实现面向对象编程的方式。类定义了一个对象的特征和行为。类是一种模板或者蓝图,可用于创建一个具有相同属性和方法的多个对象。 ES5中定义类 在ES5中,我们使用构造函数来定义一个类。 function Person(name, age) { this.…

    JavaScript 2023年5月27日
    00
  • js/jquery解析json和数组格式的方法详解

    JS/jQuery解析JSON和数组格式的方法详解 什么是JSON JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,它是基于JavaScript的一个子集,可以被任何语言读取和使用。JSON格式有以下特点: 简洁易读:JSON格式中的数据是纯文本的键值对,可读性较高 结构清晰:数据以键值对(key-value)的…

    JavaScript 2023年5月27日
    00
  • 原生js实现倒计时功能(多种格式调用)

    下面是关于原生JavaScript实现倒计时功能的攻略,包含了多种格式的调用方式: 前置知识 在学习原生JavaScript实现倒计时功能前,需要掌握HTML、CSS、和基本的JavaScript语法知识。 原生JavaScript实现倒计时功能 HTML 首先,我们需要在HTML文件中创建一个具有倒计时功能的元素,例如一个 div 元素: <div …

    JavaScript 2023年5月27日
    00
  • JS阻止事件冒泡行为和闭包的方法

    JS阻止事件冒泡行为 在JavaScript中,事件冒泡指的是当子元素触发一个事件时,这个事件将沿着DOM树向它的祖先元素传播,直到被处理或到达文档根。有时候,我们需要阻止事件的冒泡传递,这时可以使用以下两种方法: stopPropagation()方法 stopPropagation()是用来停止事件在DOM层次中进一步传播的方法。当调用stopPropa…

    JavaScript 2023年6月10日
    00
  • 国外的为初学者写的JavaScript教程

    下面我将为您详细讲解如何学习“国外的为初学者写的JavaScript教程”。 一、寻找合适的教程网站 在寻找JavaScript教程网站时,您可以通过搜索引擎来寻找。以下是几个优秀的JavaScript教程网站,推荐大家参考: MDN Web 文档:MDN Web 文档是一个权威的Web技术文档网站。该网站的JavaScript教程适合初学者学习,并有逐步深…

    JavaScript 2023年6月10日
    00
合作推广
合作推广
分享本页
返回顶部