console.log()显示变量值在实际改变之前的值
P粉356361722
P粉356361722 2023-08-22 17:35:57
0
2
281
<p>这段代码我理解。我们将A复制一份并称之为C。当A发生变化时,C保持不变。</p> <pre class="brush:php;toolbar:false;">var A = 1; var C = A; console.log(C); // 1 A++; console.log(C); // 1</pre> <p>但是当A是一个数组时,情况就不同了。不仅C会改变,而且在我们甚至触碰A之前就已经改变了。</p> <pre class="brush:php;toolbar:false;">var A = [2, 1]; var C = A; console.log(C); // [2, 1] A.sort(); console.log(C); // [1, 2]</pre> <p>有人能解释一下第二个例子中发生了什么吗?</p>
P粉356361722
P粉356361722

全部回复(2)
P粉949848849

Pointy的回答提供了很好的信息,但对于这个问题来说并不是正确的答案。

OP所描述的行为是一个bug的一部分,该bug最早于2010年3月报告,2012年8月对Webkit进行了修复,但截至本文撰写时,尚未集成到Google Chrome中。该行为取决于在将对象文字传递给console.log()时,控制台调试窗口是打开还是关闭

原始bug报告的摘录(https://bugs.webkit.org/show_bug.cgi?id=35801):

来自Chromium开发人员的回应:

随后发生了很多抱怨,最终导致了一个bug修复。

2012年8月实施的补丁的变更日志说明(http://trac.webkit.org/changeset/125174):

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!