diff --git a/深入探索 JavaScript/JavaScript 执行.md b/深入探索 JavaScript/JavaScript 执行.md index 595877f..48edbc9 100644 --- a/深入探索 JavaScript/JavaScript 执行.md +++ b/深入探索 JavaScript/JavaScript 执行.md @@ -84,4 +84,11 @@ this 的值存放在私有属性 \[\[ThisBindingStatus\]\] 中 Completion Record 是语言实现者才需要关心的内容,但是我们可以从中看出一些 JavaScript 更加底层的实现逻辑,它有着三个字段分别是: - \[\[type\]\] - 表示完成的类型,有 break continue return throw 和 normal 几种类型 - \[\[value\]\] - 表示语句的返回值,如果语句没有,则是 empty -- \[\[target\]\] - 表示语句的目标,通常是一个 JavaScript biao'qi'a \ No newline at end of file +- \[\[target\]\] - 表示语句的目标,通常是一个 JavaScript 标签 + +JavaScript 正是依靠语句的 Completion Record 类型,方才可以在语句的复杂嵌套结构中,实现各种控制,普通语句执行后,会得到 \[\[type\]\] 为 normal 的 Completion Record,JavaScript 引擎遇到这样的 Completion Record,会继续执行下一条语句。 + +这些语句中,只有表达式语句会产生 \[\[value\]\],当然,从引擎控制的角度,这个 value 并没有什么用处,Chrome 控制台显示的正是语句的 Completion Record 的 \[\[value\]\] + +参考文章: +- http://www.ecma-international.org/ecma-262/#sec-ecmascript-specification-types \ No newline at end of file