对象 属性 的值未按预期更改
Value of object property not changed as expected
我只是想知道为什么在我的代码中我在方法中更改了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)
第一部分,
cr = obj.next;
表示“标识符(单词cr
)的值是对象obj.next
所在内存位置的值”
cr = 6;
表示“完全忽略 cr
的任何先前值;标识符 cr
的值现在是整数文字 6
”
JavaScript,与 C/C++(使用指针,或按引用传递与按值传递)不同,没有办法更改对象的值单个标识符(变量名)。它可以改变变量的值,但不能改变它之前指向的对象。
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
这样你就得到了你想要的输出。
我希望它能帮助你“继续编码”。
我只是想知道为什么在我的代码中我在方法中更改了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)
第一部分,
cr = obj.next;
表示“标识符(单词cr
)的值是对象obj.next
所在内存位置的值”
cr = 6;
表示“完全忽略 cr
的任何先前值;标识符 cr
的值现在是整数文字 6
”
JavaScript,与 C/C++(使用指针,或按引用传递与按值传递)不同,没有办法更改对象的值单个标识符(变量名)。它可以改变变量的值,但不能改变它之前指向的对象。
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
这样你就得到了你想要的输出。
我希望它能帮助你“继续编码”。