找回密码
 立即注册
老冷培训班汇总介绍老冷付费工具汇总介绍老鬼UI编程学院EasyClick所有产品简介EasyClick官方交流群
IOS授权价格IOS/安卓 自助提卡链接安卓-中控群控-电脑授权-购买IOSusb版投屏群控教程IOS脱机版激活教程
IOS脱机版wifi局域网脚本中控教程IOS脱机版wifi局域网群控投屏教程远程调试frp,兼容安卓/IOS热更新工具,兼容安卓/IOS脱机版老冷网盘
查看: 1589|回复: 0

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

[复制链接] |主动推送

1054

主题

135

回帖

4万

积分

管理员

【导师】

积分
40640
最后登录
2024-11-24
在线时间
1650 小时

兔年勋章金牌银牌铜牌导师微信认证热心会员推广达人宣传达人灌水之王突出贡献优秀版主荣誉管理论坛元老QQ认证EC VIP学员

发表于 2023-3-17 16:57:52 | 显示全部楼层 |阅读模式

马上注册,解锁更多高级玩法

您需要 登录 才可以下载或查看,没有账号?立即注册

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

一般来讲,我们对变量进行赋值时
[JavaScript] 纯文本查看 复制代码
let a = 1

如果我们想复制变量,通常
[JavaScript] 纯文本查看 复制代码
let b = a

在我们普通认知里,b=a以后,a不管再怎么变化,跟b就没有关系了,也就是所谓的[值传递]

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

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

地址传递的意义在于,节省内存空间和提高效率,而当你
[JavaScript] 纯文本查看 复制代码
let a = [1,2,3]
let b = a

此时因为a,b保存的都是内存地址,而不是实际的值,当你修改b时,a会跟着一起改变
[JavaScript] 纯文本查看 复制代码
b[0] = 3
logd(b) // 3,2,3
logd(a) // 3,2,3


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


常用的浅拷贝

[JavaScript] 纯文本查看 复制代码
let a = [1,2,3]
let b = JSON.parse(JSON.stringify(a))

对象也是一样的用法,可以百度了解一下
至于深拷贝,也需要百度了解更多,就不展开了


VIP培训班介绍汇总[安卓/IOSusb版/IOS脱机版/PHP/nodejs等]
http://bbs.laoleng.vip/forum.php?mod=viewthread&tid=428

付费工具介绍汇总[热更/远程调试/IOS易语言UI/拓展插件等]
http://bbs.laoleng.vip/forum.php?mod=viewthread&tid=430
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

想要力量吗骚年上一条 /2 下一条

关闭

免责声明|Archiver|手机版|老冷编程学院 ( 闽ICP备20013040号-2 )|网站地图

GMT+8, 2024-11-24 12:55

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表