如何在Javascript中更改常量数组?

beq87vna  于 2022-12-17  发布在  Java
关注(0)|答案(4)|浏览(198)

我有一个数组data,但是它是用const声明的。我对改变数组中的数据感到很困惑。下面是我的数组:

const person = {
   name: "Person A", ---> the data I want to change
   age: 100,
   favDrinks: [
     "coffee",
     "temulawak", --->> the data I want to change
     "tea"
       ],
 greeting: function() {
     console.log("Hello World"); --->> the data I want to change
   }
 }

如何修改person.name、person.favDrinks[1]、Hello World的问候函数的数据,有没有可能修改常量数据,我想改成文本字符串,下面是我的代码:

function personName(nama ){
  let person.name = nama;
    person.push("name:" nama );

}

console.log(personName("Molly"));

但是他们都错了,请帮帮我,谢谢。:)

34gzjxbg

34gzjxbg1#

你做错了几件事。
1.您正在推入对象而不是数组。
1.您正在函数中使用let重新定义对象person。
1.可以更改常量对象的属性;但是,您不能重新指定它。
1.只需添加return person

const person = {
  name: "Person A",
  age: 100,
  favDrinks: ["coffee", "temulawak", "tea"],
  greeting: function () {
    console.log("Hello World");
  },
};

function personName(nama) {
  person.name = nama;
  return person;
}

console.log(personName("Molly"));

这是您在进行更改后得到的结果:

{
  name: 'Molly',
  age: 100,
  favDrinks: [ 'coffee', 'temulawak', 'tea' ],
  greeting: [Function: greeting]
}
myss37ts

myss37ts2#

您正在使用let创建一个名为person.name的变量,这是不可能的,然后将其推送到person中,在您的情况下,这不是您应该做的,而是直接更改值。

function personName(nama) {
    person.name = name
    return person
}

console.log(personName("Molly"));

如果一个常量变量是一个字符串或jumber,它不能被改变。但是如果它是一个数组或对象,它不能被改变,但是在对象或数组中的项目可以被添加,删除,或编辑。

shstlldc

shstlldc3#

  • person是一个对象,不是数组。
  • 可以更改常量对象的属性值。
    工作演示:
const person = {
    name: "Person A",
  age: 100,
  favDrinks: [
    "coffee",
    "temulawak",
    "tea"
  ],
    greeting: function() {
    console.log("Hello World");
  }
 };
 
person.name = "Person B";
person.favDrinks[1] = "Soft Drinks";
person.greeting = function() {
    console.log('Hello Guys!');
}

console.log('updated object', person);
qjp7pelc

qjp7pelc4#

我在Scrimba上关注“学习javascript“,我陷入了一个奇怪的境地。
我了解到const变量不能被重新分配,数组和对象中有一些方法,你可以在其中添加或删除元素(例如arr.push()

const s = [5, 7, 2];
function editInPlace() {
    "use strict";
    s = [2, 5, 7];
}
editInPlace();

控制台错误:

Error: SyntaxError: unknown: "s" is read-only (/index.js:1)

但神奇的是,当他们用特定的索引为const数组变量分配新值时,它工作得很好。

const s = [5, 7, 2];
function editInPlace() {
    "use strict";

    //s = [2, 5, 7];
    s[0] = 2;
    s[1] = 5;
    s[2] = 7;
}
editInPlace();

console.log(s)

控制台输出:

[2, 5, 7]

现在我不明白为什么会发生这种情况。
期待您的来信。

相关问题