你了解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日

相关文章

  • JavaScript 预解析的4种实现方法解析

    JavaScript 预解析的4种实现方法解析 什么是 JavaScript 预解析 JavaScript 预解析是指在代码执行之前,JavaScript 引擎会对代码进行解析和预处理,包括变量提升、函数提升等操作。 为什么需要 JavaScript 预解析 在 JavaScript 中,变量的作用域是函数级别的,函数的作用域也是函数级别的。如果在函数调用之…

    JavaScript 2023年5月18日
    00
  • vue element动态渲染、移除表单并添加验证的实现

    下面我会详细讲解“vue element动态渲染、移除表单并添加验证的实现”的完整攻略。 在vue element中实现动态渲染、移除表单并添加验证的步骤如下: 第一步:引入element-ui组件库和相关模块 在vue项目中,我们首先需要引入element-ui组件库和相关模块以使用其中的表单组件和表单验证功能。 <template> <…

    JavaScript 2023年6月10日
    00
  • JavaScript中的this关键字使用方法总结

    当我们编写 JavaScript 代码时,经常需要访问当前函数上下文中的数据。为了做到这一点,JavaScript 提供了一个关键字 this。this 关键字表示当前函数所在的对象,它包含了当前函数执行时所依存的上下文信息。在 JavaScript 中,this 关键字的使用非常重要,学会正确地使用 this 关键字对于编写高质量的代码非常重要。 下面是 …

    JavaScript 2023年5月28日
    00
  • js实现input密码框提示信息的方法(附html5实现方法)

    请看下面的完整攻略: 前置知识 在讲解实现方法之前,需要了解以下几个基础知识: jQuery:一个JavaScript库,封装了很多常用的操作,能够简化JavaScript编程。 input:HTML5中的input元素,用于创建交互式控件,包括输入框、密码框、复选框、单选框、按钮等。 placeholder:input元素中的一个属性,用于设置输入框或密码…

    JavaScript 2023年6月10日
    00
  • js事件监听器用法实例详解

    下面是“js事件监听器用法实例详解”的攻略: 什么是事件监听器? 事件监听器(Event Listener)是一种常用的 JavaScript 技术,它用来监听特定元素(如 DOM 元素)上的特定事件(如单击、滚动、鼠标移动、键盘按键等),并在事件发生时触发执行指定的回调函数。这种技术可以实现 Web 页面上的交互效果,比如:按钮单击后弹出框、下拉菜单、图片…

    JavaScript 2023年6月10日
    00
  • JS对URL字符串进行编码/解码分析

    好的!JS对URL字符串进行编码/解码的主要方法有两种:encodeURIComponent和decodeURIComponent。下面对它们进行详细说明: encodeURIComponent encodeURIComponent 方法可以将字符串中的非字母数字字符(比如空格、中文、特殊符号)转换为十六进制字符。转换后的字符前面加上 %,这样可以在URL中…

    JavaScript 2023年5月20日
    00
  • JavaScript实现简易飞机大战

    下面我将详细讲解“JavaScript实现简易飞机大战”的完整攻略。 前言 在开始编写代码之前,我们需要先了解一下游戏的基本结构和要素,主要包括游戏界面、玩家飞机、敌机、子弹、游戏结束等。在了解了这些基本要素后,我们才能更好的开始编写游戏代码。 游戏界面 游戏的界面主要由背景和玩家飞机、敌机等元素组成。我们可以使用HTML和CSS创建一个游戏界面,其中CSS…

    JavaScript 2023年6月11日
    00
  • 常用的JS验证和函数汇总

    下面是有关“常用的JS验证和函数汇总”的详细讲解: 常用的JS验证和函数汇总 一、JS验证错误提示 在进行表单验证时,我们需要考虑到用户的体验感觉,如果用户输入的内容有误,我们需要对用户进行友好的提示,这样可以避免用户产生不必要的焦虑或者反感。 下面是一个JS验证错误提示的示例: function checkForm() { var name = docum…

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