簡體   English   中英

如何在 Javascript 中更改常量數組?

[英]How Can I Change Constant Array in Javascript?

我有一個數組數據,但它是用 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"));

但他們都錯了。 請幫我。 謝謝你。 :)

你做錯了幾件事。

  1. 您正在推入 object,而不是數組。
  2. 您通過在 function 中使用let來重新定義 object 人。
  3. 您可以更改 const object 的屬性; 但是,您不能重新分配它。
  4. 只需添加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]
}

您正在使用 let 創建一個名為person.name的變量,這是不可能的,然后將其推送到 person 中,在您的情況下,這不是您應該做的,而是直接更改值。

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

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

如果一個常量變量是一個字符串或一個jumper,它就不能被改變。 但如果它是數組或 object 則無法更改,但可以添加、刪除或編輯 object 或數組中的項目。

  • person是 object,而不是數組。
  • 您可以更改常量 object 的屬性值。

工作演示:

 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);

我在 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]

現在我不明白為什么會這樣。

期待您的來信。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM