javascript - 为什么第二个对象的值没有改变?

标签 javascript

我正在学习 JavaScript。我对以下示例的工作方式感到困惑?我创建了一个对象 person 并将其值分配给 Person2。

var person = "hello";  
var Person2 = person; 
person = "hey"; 

console.log(Person2); // prints hello
console.log(person); //prints hey

为什么 Person2 的值没有改变,即使 person 已经被分配了一个新值?是因为我正在传递一个引用吗?我不清楚它的实现情况。我缺少什么概念?

最佳答案

您正在处理 JavaScript 中的 primitive - 字符串是原始类型( bool 值、数字、未定义和 null 也是如此)。基元是按值分配的,而不是按引用分配的。

数组和对象通过引用赋值。

var person = ['test'];
var person2 = person;
person[0] = 'hi';

console.log(person); //['hi'];
console.log(person2); //['hi'];

关于javascript - 为什么第二个对象的值没有改变?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19364717/

相关文章:

javascript - 我想显示两个弹出窗口,一个用于错误消息,另一个用于成功消息

javascript - 如何展平嵌套的 JSON?

javascript - 将点击处理程序与 CSS 兄弟选择器组合时 IE 中的奇怪行为

javascript - 在 HEAD 中最后一个硬编码的 JavaScript 文件引用之后附加 JavaScript 文件引用

javascript - 可视化 html5 Canvas

javascript - 如何使用 jQuery 一次填充一个无序列表中的一个元素?

javascript - Three.js计算几何人脸面积(Face3)

javascript - Request.Get 和异步/等待

javascript - 使用 Electron 将 Angular 项目(进行 REST API 调用)转换为桌面应用程序

javascript - Jquery 检查复选框是否被选中