Chrome JS console如何做预评估?

How does Chrome JS console do pre-evaluation?

Chrome JS 控制台仅预评估(在您在 JavaScript 代码行上按回车键之前显示灰色结果)没有副作用的表达式。 Chrome 怎么说?副作用测试:改变闭包(非局部)变量,改变非局部变量指向的对象(包括访问具有副作用的 get() 属性的属性),异步代码(setTimeout),console.log,等等

V8 有大量列表,指出哪些内部操作(“字节码处理程序”、“内部函数”和“内置函数”)被认为对于此功能的目的没有副作用。请参阅 src/debug/debug-evaluate.cc 了解所有详细信息。

(此区别绝不会暴露于或与常规 JavaScript 操作相关;它纯粹用于调试器功能。)