值和引用的区别

他们的区别在于箭头指向:
值类型就是把我的绝世武功给你,我是不变的!而你可以学我的!但是你学了蛤蟆功,跟我没什么关系
引用类型取决于变量地址,确切的说你偷走我的钱包!花完之后又给了我!最后值都是0.1

值类型
number string boolean
var a=1
var b = a
//此时a和b相同等于1

b=2
//此时b等于2,a还是1

引用类型
object { } [ ]
var a={ money:500 }
var b = a
//此时a和b都是'我'

b.money = 1
//此时b等于1,a拿到的也是1

浅拷贝

想让引用类型 值类型一样效果:你过你的,我过我的
object.assign({}, a)
{}空的或者新增,可惜他只能一层浅拷贝

var a = {
    name:"苍井空"
}

var b = Object.assign({}, a)
b.name = "饭岛爱"
console.log(`此时a:${a.name}, 而b则是${b.name}`)

深拷贝

第一层的a{ name:"xx" }
本体没变,但是第二层的a{ mygirl: ... } 却都被改变了

第一招:lodash _.clone("浅")_.cloneDeep("深")

var a = { name:"大帅哥", mygirl:['苍xx','饭xx','波多xxx'] }
var b = _.cloneDeep(a)
var b = _.clone(a)

第二招:

var a = {
  name: "大帅哥",
  mygirl: ['苍xx', '饭xx', '波多xxx'],
}

var b = structuredClone(a)
b.mygirl[0] = "饭岛爱"

console.log(`a:${a.mygirl} `)
console.log(`b:${b.mygirl} `)

赵不悔
96 声望4 粉丝

我以为租来的人生也能幸福…要不是幸福终究有个期限,我也就信了。


引用和评论

0 条评论