整理下之前做的有点疑惑的js基础题目和大家分享以下,如果大家觉得有用,别忘了点一下赞哦
引用值和原始值
const person = {
name:"Lydia",
city:"America",
obj:{
hobby:'swimming'
}
}
let city = person.city //flag1
city = "Amsterdam"
let temp = person.obj //flag2
temp.hobby = "run"
console.log(person)
//{ name: 'Lydia', city: 'America', obj: { hobby: 'run' } }
这题的主要问题是
flag1和flag2同时对引用对象做了修改,效果却不一样?
flag1处:是把字符串赋值给变量,不生成指针,而是生成一个副本,相当于 let temp = "America"
,自然不会改变到对象的值。
flag2处:是把一个对象赋值给变量,此对象指向同一个指针,相当于let temp = {hobby:"swimming"}
,所以会通过指针改变对象的值。