首页 > 解决方案 > Javascript 也改变了 const 变量

问题描述

let courses = [
    {id:1, name : "Femin"},
    {id:2, name : "Darsh"},
    {id:3, name : "Smit"},
];

let enteredId = 2;

const course = courses.find(c => c.id === enteredId);

course.name = "Darsh Bhimani";

console.log(course);
console.log(courses);

所以这是我一直在使用的代码。在过去的 5-6 年里,我一直在使用 Java 和 C、C++,并在一周前开始使用 Javascript。(对于 node.js)。

现在我在这里感到困惑的是两件事:

  1. 变量 course 是一个常数,它的值仍然可以改变。如何 ?
  2. 该课程是从数组课程中获取的,但仍在更改课程中,当我记录课程时,我看到数组的值也发生了变化。这怎么可能?

在这种情况下,值是否更改无关紧要,但是当我不希望数组更改时,我该怎么办?

标签: javascriptnode.js

解决方案


你可以找到一个对象引用并打破这个,你可以得到一个对象的浅拷贝Object.assign。这种方法undefined也有效,但在这种情况下返回一个空对象。

let courses = [
    {id:1, name : "Femin"},
    {id:2, name : "Darsh"},
    {id:3, name : "Smit"},
];

let enteredId = 2;

const course = Object.assign({}, courses.find(c => c.id === enteredId));

course.name = "Darsh Bhimani";

console.log(course);
console.log(courses);
.as-console-wrapper { max-height: 100% !important; top: 0; }


推荐阅读