Chrome 对象的 JavaScript 控制台评估行为
在给定的代码片段中:
var s = ["hi"]; console.log(s); s[0] = "bye"; console.log(s);
Firefox 和 Chrome 控制台显示不同的结果。 Firefox 显示修改后的更新数组,而 Chrome 在两种情况下都显示修改后的值。
差异的原因
Chrome 的 JavaScript 控制台对对象执行延迟计算。这意味着它仅在必要时才评估对象,例如需要在控制台中显示对象时。因此,在这种情况下,Chrome 不会在第一个 console.log 语句期间评估该对象,而是等待第二个 console.log 语句执行。这使得 Chrome 可以避免过早评估对象的开销。
避免懒惰
要强制 Chrome 立即评估对象,可以使用对象,如下所示:
console.log(s.toString());
通过调用 toString,创建对象的表示形式,该表示形式不会被后续操作更改声明。当 Chrome 评估 console.log 语句时,它将拥有该对象的更新值,因此不会发生延迟评估。
以上是为什么 Chrome 的 JavaScript 控制台显示与 Firefox 不同的对象计算行为?的详细内容。更多信息请关注PHP中文网其他相关文章!