代码的执行原理

2023-11-15

代码的执行原理

一、代码段

什么是代码段:一个script标签就是一个代码段。

JS代码在执行时,是一个代码段一个代码段执行。

二、代码执行的步骤

  • JS代码在执行时分两个阶段:
  • 1)预编译
  • 2)代码执行
    每一个阶段做的事情是不一样的。
先了解一下定义变量和声明变量:
    通过var定义变量:var a = 110;   定义 = 声明+赋值
    f();:使用function声明了一个函数;函数名是f  函数值是{};定义了一个函数f()
    通过var声明变量:var a = 110;  说的声明仅仅是说var a   后面是赋值

1)预编译: 提升
把加var的变量进行提升:变量声明会提升,变量的赋值是不会提升。
提升是提升到代码段最前面
把使用function声明的函数进行提升 提升的是整个函数

2)代码的执行:一行一行执行

eg:console.log(a); var a = 110; console.log(a);

  • 输出:undefiend 和 110;

执行步骤: 1)提升:因为a是var进行声明的,所以要进行提升。提升只是提升了声明并没有提升变量的值,所以现在a是undefiend。
2)执行:第一行代码得到的是a的提升值,所以是undefiend,第二行将值110赋值给了a,所以当前a为number数据类型,值为110。因此第三行代码将a的值110输出。

三、初步了解执行上下文( Execute Context)

执行上下文( Execute Context):

为了方便,以后我们统一将执行上下文简称为:EC

  • EC的作用:给代码提供数据

代码分两类:

  • 全局代码 函数外面的代码叫全局代码
  • 函数代码 一个函数就是一个局部代码
  • 全局执行上下文:
    全局代码在执行时时,就会产生全局的EC。 EC(G)
    例如:全局执行上下文
  • 局部执行上下文:
    函数代码在执行时,就会产生局部的EC。调用一个函数就产生一个EC,调用100个函数,就产生100个EC。在这里插入图片描述
  • EC栈:
    栈:杯子
    每产生一个EC就会放到杯子中,说白了,就是杯子中放鸡蛋。
    栈:先放进去的后出来
    在这里插入图片描述

执行上下文详解

我们知道,当代码执行的时候随之就产生了一个叫执行上下文的东西,也就是他使我们得到了最后的数据。
但是,执行上下文是怎么执行的呢?让我们一起探究一下吧!

我们知道,当代码进行执行的时候,必然要遵守的规则,于是他必然要经过预编译然后执行。
(何为预编译前面已经介绍,就不在讲解了。)
要用到的相关名称:ECStack:(Execute context stack):执行上下文栈
EC(G)(Execute context (globle):存放全局变量的执行上下文:包含:var 定义的全局变量,引用数据类型)
**EC(f)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

代码的执行原理 的相关文章

随机推荐

  • windows 2003 传真服务器高级配置与管理

    这里我和大家一起来了解一下传真服务器的高级配置与管理 在上一博文中我说了 我们要实现电子邮件的通知和传真服务的控制台管理已经日志分析的功能 首先介绍的是windows 2003自带的传真服务器提供了SMTP支持传真到达通知的功能和传真发送成
  • 备战2024秋招面试题-最左匹配原则、索引失效情况、算法(最长回文子串)

    前言 textcolor Green 前言 前言 快秋招了 那么这个专栏就专门来记录一下 同时呢整理一下常见面试题 部分题目来自自己的面试题 部分题目来自网络整理 给我冲 学习目标 面试题 算法题 完成 学习目标 最左匹配原则 索引失效情况
  • 在微信小程序里面使用npm

    在微信小程序里面使用npm 从小程序基础库版本 2 2 1 或以上 及开发者工具 1 02 1808300 或以上开始 小程序支持使用 npm 安装第三方包 为了扩展微信小程序的功能 现在允许微信小程序使用npm 来扩展我们的功能 使用很简
  • 计算机三级网络技术备考复习资料

    以前用到的资料 偶尔翻翻还挺有用 记录之 第一章 计算机基础 分析 考试形式 选择题和填空题 6个的选择题和2个填空题共10分 都是基本概念 1 计算机的四特点 有信息处理的特性 有广泛适应的特性 有灵活选择的特性 有正确应用的特性 此条不
  • vue 测试环境 生产环境 线上环境 环境配置

    var env config dev name dev api url location protocol 10 0 0 230 80 api server url location protocol narcissus ih2ome cn
  • cpp 5.7

    5 7 include
  • 谈谈 Docker Volume 之权限管理(一)

    Volume数据卷是Docker的一个重要概念 数据卷是可供一个或多个容器使用的特殊目录 可以为容器应用存储提供有价值的特性 持久化数据与容器的生命周期解耦 在容器删除之后数据卷中的内容可以保持 Docker 1 9之后引进的named v
  • 1056 Mice and Rice (25 分)

    题目 题解 模拟 看懂题 自己实现就OK了 代码 include
  • pytorch构造可迭代的Dataset——IterableDataset(pytorch Data学习二)

    如果是可以一次性加载进内存的数据 上一篇博客 pytorch 构造读取数据的工具类 Dataset 与 DataLoader pytorch Data学习一 已经足以应付了 但是很多时候数据集较大 比如6个T 的数据 没办法直接加载 因此这
  • 如何理解时钟周期及公式CPU执行时间 = CPU时钟周期数/主频

    因为用OneNote制作的 公式复制不过来太麻烦 直接截图了 下面看一下时钟周期的定义 CPU时钟周期 通常为节拍脉冲或T周期 即主频的倒数 它是CPU中最小的时间单位 每个动作至少需要一个时钟周期 其实就是把前面的式子中的秒这个单位忽略掉
  • Python3 安装 MySQL-python错误解决

    目的 解决 python3 利用 pip 安装 MySQL python 问题 参考错误信息 apps svr python3 bin pip3 install MySQL python Collecting MySQL python Us
  • shuqian

    h1 Bookmarks h1 dl p p dt h3 h3 dt dl
  • 【Nexus】安装配置与使用

    1 为什么使用Nexus 如果没有私服 我们所需的所有构件都需要通过maven的中央仓库和第三方的Maven仓库下载到本地 而一个团队中的所有人都重复的从maven仓库下 载构件无疑加大了仓库的负载和浪费了外网带宽 如果网速慢的话 还会影响
  • Constructing Roads In JGShining's Kingdom

    点击打开链接 Problem Description JGShining s kingdom consists of 2n n is no more than 500 000 small cities which are located i
  • Python3+pyshark捕获数据包并保存为文件

    一 直接使用wireshark捕获数据包并保存为文件 可以使用wireshark通过图形界面的操作来实现捕获数据包并保存为文件 wireshark默认捕获的数据包保存为临时文件 如果最后退出时不选择保存那么临时文件将会被删除 可以在 菜单栏
  • 汉明距离(Hamming Distance)

    汉明距离 Hamming Distance 定义 汉明距离以美国数学家理查德 卫斯里 汉明的名字命名 表示两个相同长度的字符串在相同位置上不同字符的个数 用d x y 来表示x和y两个字符串的汉明距离 汉明距离可以用来计算两个文本之间的相似
  • diff和patch命令——Linux命令解析(一)

    个人学习记录使用 一 说明 patch命令和diff命令 往往是要搭配使用的 patch 利用提供的补丁文件 给源文件打补丁 diff 比较两个文件 生成需要修改的补丁文件 二 diff命令 生成补丁文件 1 命令格式 diff optio
  • Cygwin 、MSYS、MinGW 的区别与联系是怎样的?

    讲区别联系之前 我们先看一下这几个东东的前世今生 Cygwin 原 Cygnus 出品 已被红帽收购 目前是 RedHat 名下的项目 项目的目的是提供运行于 Windows 平台的类 Unix 环境 以 GNU 工具为代表 为了达到这个目
  • Java 中的Lock锁对象(ReentrantLock/ReentrantReadWriteLock)详解

    目录 1 Lock Objects 详解 2 Java 中的 Lock Objects 的实现原理 3 ReentrantLock 详解 4 ReentrantReadWriteLock 详解 5 Lock锁的等待和唤醒 6 Lock 和
  • 代码的执行原理

    代码的执行原理 一 代码段 什么是代码段 一个script标签就是一个代码段 JS代码在执行时 是一个代码段一个代码段执行 二 代码执行的步骤 JS代码在执行时分两个阶段 1 预编译 2 代码执行 每一个阶段做的事情是不一样的 先了解一下定