[英]Why can I change a constant object in 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"));
但他們都錯了。 請幫我。 謝謝你。 :)
你做錯了幾件事。
let
來重新定義 object 人。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,而不是數組。工作演示:
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.