设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索

js代码问题

查看数: 4381 | 评论数: 5 | 收藏 1
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2020-1-16 18:10

正文摘要:

如图所示,输出的两次alert竟然不同,我term()方法并没有改变那个值啊,为什么!?

回复

喵呜喵5 发表于 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. }
复制代码
笹舟丶萚 发表于 2020-1-16 23:14:16

我知道了,用slice(0)就ok了,解决了
笹舟丶萚 发表于 2020-1-16 23:05:21
笹舟丶萚 发表于 2020-1-16 23:01
搜了一下我懂了,我以为形参是不改变原变量的。那我不想动原变量该怎么修改代码 ...

用clone是吧?
笹舟丶萚 发表于 2020-1-16 23:01:47
喵呜喵5 发表于 2020-1-16 19:38
你想问的是不是引用传递的问题

搜了一下我懂了,我以为形参是不改变原变量的。那我不想动原变量该怎么修改代码
喵呜喵5 发表于 2020-1-16 19:38:50
你想问的是不是引用传递的问题

  1. var a = {}
  2. var b = a
  3. b['test'] = 123
  4. alert(a)
复制代码
拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-23 03:04

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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