查看: 4807|回复: 5

[有事请教] js代码问题

[复制链接]
梦石
0
星屑
665
在线时间
50 小时
注册时间
2018-6-27
回帖
30
发表于 2020-1-16 18:10:56 | 显示全部楼层 |阅读模式

加入我们,或者,欢迎回来。

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

×
L03_I5JXUD~IOQK5}7}P6BC.png _BU5(5OPDWZ7OW5ES}33A0S.png
如图所示,输出的两次alert竟然不同,我term()方法并没有改变那个值啊,为什么!?

梦石
1
星屑
23246
在线时间
9564 小时
注册时间
2012-6-19
回帖
7018

开拓者短篇九导演组冠军

发表于 2020-1-16 19:38:50 | 显示全部楼层
你想问的是不是引用传递的问题

  1. var a = {}
  2. var b = a
  3. b['test'] = 123
  4. alert(a)
复制代码
回复 1 0

使用道具 举报

梦石
0
星屑
665
在线时间
50 小时
注册时间
2018-6-27
回帖
30
 楼主| 发表于 2020-1-16 23:01:47 | 显示全部楼层
喵呜喵5 发表于 2020-1-16 19:38
你想问的是不是引用传递的问题

搜了一下我懂了,我以为形参是不改变原变量的。那我不想动原变量该怎么修改代码
回复

使用道具 举报

梦石
0
星屑
665
在线时间
50 小时
注册时间
2018-6-27
回帖
30
 楼主| 发表于 2020-1-16 23:05:21 | 显示全部楼层
笹舟丶萚 发表于 2020-1-16 23:01
搜了一下我懂了,我以为形参是不改变原变量的。那我不想动原变量该怎么修改代码 ...

用clone是吧?
回复

使用道具 举报

梦石
0
星屑
665
在线时间
50 小时
注册时间
2018-6-27
回帖
30
 楼主| 发表于 2020-1-16 23:14:16 | 显示全部楼层

我知道了,用slice(0)就ok了,解决了
回复

使用道具 举报

梦石
1
星屑
23246
在线时间
9564 小时
注册时间
2012-6-19
回帖
7018

开拓者短篇九导演组冠军

发表于 2020-1-17 01:42:26 | 显示全部楼层
本帖最后由 喵呜喵5 于 2020-1-17 01:43 编辑

别修改原数组就行了,例如 attr = attr.concat([]) 直接浅拷贝一个 attr 出来

或者你这段逻辑我自己习惯用 map
  1. term = function(attr){
  2.   return attr.map((e, index){
  3.     if (e === "等级"){ return TextManager.level }
  4.     else if (e === "HP"){ return TextManager.hp }
  5.     // .....省略一堆else if
  6.     else{ return attr[index] }
  7.   })
  8. }
复制代码
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部