【问题标题】:Javascript changes const variables also [duplicate]Javascript也改变了const变量[重复]
【发布时间】:2019-11-11 04:34:17
【问题描述】:
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. 课程是从数组课程中获取的,但仍在更改课程,当我记录课程时,我看到数组的值也发生了变化。这怎么可能?

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

【问题讨论】:

  • const 在 JavaScript 中只表示变量不能被重新赋值,对象的属性仍然可以改变。
  • const我们可以改变对象的属性

标签: javascript node.js


【解决方案1】:

您可以通过查找对象引用来打破它,您可以使用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; }

【讨论】:

    猜你喜欢
    • 2015-10-01
    • 2018-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-29
    • 2020-03-13
    • 1970-01-01
    • 2012-11-24
    相关资源
    最近更新 更多