javascript - console.log() 显示变量值实际变化前的变化值

标签 javascript google-chrome variables

这段代码我明白了。我们复制 A 并将其称为 C。当 A 更改时,C 保持不变

var A = 1;
var C = A;
console.log(C); // 1
A++;
console.log(C); // 1

但是当 A 是数组时,情况就不同了。 C 不仅会改变,而且在我们接触 A 之前它就会改变

var A = [2, 1];
var C = A;
console.log(C); // [1, 2]
A.sort();
console.log(C); // [1, 2]

有人可以解释第二个例子中发生了什么吗?

最佳答案

Console.log() 被传递了一个对象的引用,因此控制台中的值随着对象的变化而变化。为避免这种情况,您可以:

console.log(JSON.parse(JSON.stringify(c)))

MDN warns :

Please be warned that if you log objects in the latest versions of Chrome and Firefox what you get logged on the console is a reference to the object, which is not necessarily the 'value' of the object at the moment in time you call console.log(), but it is the value of the object at the moment you open the console.

关于javascript - console.log() 显示变量值实际变化前的变化值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11284663/

相关文章:

javascript - 浏览器上的关闭事件

javascript - 如何在本地浏览器上存储用户 session ?

javascript - 如何使用 PHP 和 JQuery AJAX 在 <div> 标签中检索和插入 MySQL 数据?

javascript - 相对改变div大小的全部内容

Ruby 1.9.3 用 eval 定义 var

php - 如何将帖子(变量)信息传递到第二页

javascript - 如何在 Android 上的 Cordova Chrome 应用程序中播放字符串中的 Base64 编码的 mp3?

javascript - 当 Chrome 被无限循环卡住时,如何清空缓存?

javascript - 在移动设备上使用 Chrome 浏览器强制视频自动播放

c++ - 是否可以将任何类型的函数存储在一个变量中?