<script>
let person = { name: "Lydia" };
const menbers = [person]
person = null
console.log(person, menbers);
</script>
我的思路理解输出的是 null [null]
我的疑问:person和menbers[0] 不应该指向同一地址数据,为什么person赋值为null menbers[0] 没有变
为什么修改person的name或者menbers[0]的name 都相互影响
而上面的例子中为什么person赋值为null 没有影响到 menbers[0]
let person = { name: "Lydia" };
const menbers = [person]
console.log(person == menbers[0]); // true
person.name = 'huge'
menbers[0].name = '梅长苏'
console.log(person, menbers);
内存地址
person -> { name: "Lydia" } 指向
menbers = [person] 相当于 menbers = [person指向的内存地址] 也就是 { name: "Lydia" }
person=null 相当于重新指向了一个内存地址,但是menbers指向的是原来指向的内存地址
内存地址中的数据变了 自然而然的也就变了
有意思的问题
null 是表示缺少的标识,指示变量未指向任何对象。就是person指向的地址为空了,所以person为空,但是那块地址还在,那块地址上的值还在,还有members的引用,所以输出还是原来的值。
而 person.name = 'huge'
menbers[0].name = '梅长苏'相当于修改了那块地址上的值了,所以会出现你看到的输出