什么是JavaScript? JS代码如何按行执行?
#javascript #网络开发人员 #初学者 #browser

根据MDN文档,JavaScript的高级定义是:

JavaScript是一种脚本或编程语言,可让您在网页上实现复杂的功能。

JavaScript中的所有内容都发生在执行上下文中。所有的JavaScript代码都在其中执行。

执行上下文是一个包含两个组件的大框:

  1. 内存组件/变量环境
  2. 执行代码组件/线程

内存组件:此处所有变量和函数都存储为键值对。

代码组件:此处全JS代码一次执行一行。

上述解释使我们达到了这个定义:
javaScript是同步 单线程语言

让我们通过理解这些关键字来分解上述定义:
同步:以特定顺序
单线程:JavaScript可以一次执行一个命令。
当当前行完成后,它只能进入下一行。

现在让我们了解如何在JavaScript程序的帮助下创建执行上下文。

var n = 2
function square(num){
    var ans = num * num
    return ans
}
var square2 = square(n)
var square4 = square(4)

当我们运行整个代码时,会创建全局执行上下文(GEC)。 GEC分为两个阶段:

  1. 记忆创建阶段
  2. 代码执行阶段

记忆创造阶段
在此阶段,JavaScript将分配内存和所有变量和函数。
内存分配从第1行开始,直到上述代码的第7行。

  1. 作为JS遇到的第1行,它将内存分配给n。它存储一个特殊的价值。
  2. 然后,它看到一个名为Square的函数和分配内存到可变正方形。在这里,它将函数的整个代码存储在此内存空间内。
  3. Similary将以未定义为Square2和Square4分配内存。
内存组件 代码组件
n:undefined
square:(num){cross var ans = num num number编号交叉引用}
square2:undefined
square4:undefined

代码执行阶段
内存分配阶段完成后,该代码再次从第1行到7行。

  1. JS遇到第1行,并替换N的值从未定义为2
  2. 现在从第2行到5行没有执行的执行,因此它移至第6行
  3. 在第6行函数中被调用,因为函数本身就是一个新的迷你程序,因此创建了新的执行上下文。
    新的执行上下文再次具有内存组件和代码组件。

    1. 内存分配阶段

      1. 它将内存分配给NUM:未定义
      2. 它将内存分配给ANS:未定义
      3. 没有更多的函数或变量,因此内存分配阶段已完成。
      <.ude。
      内存组件 代码组件
      ans:undefined
    2. 代码执行阶段

      1. 当函数用参数n调用时,然后在第1行中n = 2中的参数传递给函数
      2. 在下一行中,在代码组件中计算了NUM * NUM * NUM,并将内存组件中的ANS放入。
      3. 现在看到返回ANS。当JS遇到返回时,它将控件返回到调用函数的执行上下文。
      4. 现在,控制再次进入第6行。
      5. 现在将删除此平方函数实例的整个执行上下文。 alt text
  4. 现在,Square2变量的未定义将被4替换为4(ANS重新调整)

  5. 相似函数将在第7行中调用,并通过4个参数将返回16(所有上述步骤以相同的顺序重复)。

Image description

现在JS执行整个代码,现在删除了整个全局执行上下文。
这就是JavaScript代码按行执行的方式。

谢谢!