JavaScript'for'循环中的执行顺序是什么?

时间:2017-10-12 17:53:53

标签: javascript for-loop iteration javascript-engine

这篇文章是这篇文章的简化版本:

What is the exact order of execution of Javascript's for loop?

我非常感兴趣为什么在使用for循环时我一直感到困惑。我想学习如何在幕后执行for循环。

for (let i = 0; i < 10; i++) {
  alert(i);
};

因此,根据我的理解,这是我理解执行此类操作的顺序:

1)引擎初始化i = 0

2)引擎检查i < 10

3)引擎从包含for语句

的括号中弹出

4)引擎在循环中执行此迭代的代码

5)引擎弹回括号以增加i

6)从第2步开始重复。

我想我对第3步感到困惑。引擎是否实际弹出“for”循环以执行块内的代码?

根据我的理解,JavaScript是单线程的,只能同步运行,所以我有点困惑于如何在'for'语句的中间,引擎可以保持'for'的状态在执行块中的代码时执行内存.... 除非

我甚至不确定我是否正确地提出这个问题,我还是比较新的编程,我现在只知道vanilla JS ...下个月就是我进入节点的时候;)

想出来: Click for an image of my breakpoint placement

我了解到订单是这样的: 1)var i初始化为0

2)检查var i是否真实

3)如果为true,则执行代码,

4)执行完成后,i递增

5)增加一个,i检查真实性

6)重复步骤3 - 5,直到i为虚假

7)迭代完成。

谢谢大家。 Chrome调试器比我想象的要强大得多!

1 个答案:

答案 0 :(得分:2)

(抱歉没有足够的代表将其放在评论中)

我建议使用浏览器调试功能。我不确定你使用的是什么浏览器,但只是谷歌“使用X浏览器调试JS”,并且有很多教程。

首先,创建一个简单的for循环htm文件。然后打开浏览器并初始化调试器。然后在浏览器中打开该文件。打开“Sources”部分,您的代码将是可见的。单击带有for循环的行并设置断点,并在变量上创建监视(如i)。

然后重新加载htm文件,调试器将在断点处停止。然后逐步“逐步进入”for循环。您将能够观察系统如何在代码中查看每个步骤,您可以观察变量的变化,并希望这可以让您深入了解它是如何工作的。

这是了解您可能拥有的任何复杂代码以及轻松调试错误的好方法。