作为自 Chrome 68 起的一个选项(自 Chrome 72 或更早版本起默认启用),DevTools 控制台会在您键入时对某些表达式进行“热切求值”结果预览。
例如,如果您输入
encodeURIComponent(document.querySelector('.top-bar .-logo').innerHTML);
Run Code Online (Sandbox Code Playgroud)
您会看到粉红色的预览
"%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cspan%20class%3D%22-img%20_glyph%22%3EStack%20Overflow%3C%2Fspan%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20"
Run Code Online (Sandbox Code Playgroud)
如下,无需按 Enter 键。
然而,这不起作用,例如
document.querySelector('.top-bar .-logo').href;
Run Code Online (Sandbox Code Playgroud)
并且(正如预期的那样)它不适用于包含循环的表达式。
是否在某个地方准确记录了哪些表达式适用于此,哪些不适用?该功能的最初公告提到
DevTools 不会立即评估表达式是否会产生副作用。
但这似乎并不能解释为什么它适用于.innerHTML但不适用.href。
到底是什么决定了它将尝试计算哪些表达式?