Mr_老冷 发表于 2023-3-17 16:57:52

【EasyClick】【JavaScript】变量赋值和复制中,值传递和地址传递简介

此贴只是给小白简单介绍下,不涉及编程基础理论,有很多描述不正确地方

一般来讲,我们对变量进行赋值时
let a = 1
如果我们想复制变量,通常
let b = a
在我们普通认知里,b=a以后,a不管再怎么变化,跟b就没有关系了,也就是所谓的[值传递]

但是实际程序运行时,为了节省内存空间,对复杂类型的数据,只保留了数据在内存中起始点的内存地址,也就是所谓的[地址传递]

简单类型如字符串,数字都是值传递
数组,对象等复杂类型都是地址传递

地址传递的意义在于,节省内存空间和提高效率,而当你
let a =
let b = a
此时因为a,b保存的都是内存地址,而不是实际的值,当你修改b时,a会跟着一起改变
b = 3
logd(b) // 3,2,3
logd(a) // 3,2,3

所以当你需要复制一份单独的数组或者对象时,直接用等号=是不行的
需要用到拷贝功能,而拷贝分浅拷贝和深拷贝

常用的浅拷贝
let a =
let b = JSON.parse(JSON.stringify(a))
对象也是一样的用法,可以百度了解一下
至于深拷贝,也需要百度了解更多,就不展开了


页: [1]
查看完整版本: 【EasyClick】【JavaScript】变量赋值和复制中,值传递和地址传递简介