我只是想知道為什么在我的代碼中我在方法中更改了 cr = 6,但是在列印原始 obj cr 值時,它沒有更改為 6,而是保持其原始值。為什么?相反,如果我使用 cr.next = 6,那么原始obj. 我期待obj.next = 6。生成的輸出是:
{
val: 1,
next: {
val: 2,
next: {
val: 3,
next: null
}
}
}
我希望輸出是這樣的:
{
val: 1,
next: 6
}
let obj = {
val: 1,
next: {
val: 2,
next: {
val: 3,
next: null
}
}
}
cr = obj.next;
cr = 6;
console.log(obj)
uj5u.com熱心網友回復:
第一部分,
cr = obj.next;
表示“識別符號(字cr)的值是物件所在記憶體位置的值obj.next”
cr = 6;
意思是“完全忽略 的任何先前值cr;識別符號的值cr現在是整數文字6”
JavaScript 與 C/C (使用指標,或參考傳遞與值傳遞)不同,無法通過單個識別符號(變數名稱)更改物件的值。它可以改變變數的值,但不能改變它之前指向的物件。
uj5u.com熱心網友回復:
let obj = {
val: 1,
next: {
val: 2,
next: {
val: 3,
next: null
}
}
}
cr = obj.next;
cr = 6;
console.log(obj)
console.log("...........................")
obj.next = 6
console.log(obj)
console.log("...........................")
console.log(cr)
cr = obj.next;
cr = 6;
當您這樣做時cr = obj.next,它會創建一個新變數并將 obj.next 值分配給 cr。之后,您將 6 分配給 cr,因此它會覆寫 cr 的當前值,并且只有 6。
如果你想要一個像 的答案{val: 1, next: 6},你應該寫obj.next = 6
這樣你得到你想要的輸出。
我希望它可以幫助您“繼續編碼”。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/336797.html
標籤:javascript 目的 链表
下一篇:在不知道鍵名時訪問物件內的資料
