JavaScript实现随机将姓名推入两个数组功能时代码异常如何排查
代码问题排查及修复方案
现存问题列表
- 全局调用方法时上下文错误:全局作用域下的
this不指向luckGame对象,无法正确调用对象内的pushGamer方法 pushGamer方法逻辑缺失:当前仅返回传入的姓名,没有存储传入的姓名供后续入组逻辑使用pushGamerIntoArray方法存在语法错误:return后多余的花括号会被解析为返回对象字面量,内部写if属于非法语法- 入组逻辑未关联传入的姓名:
pushGamerIntoArray调用pushGamer时没有传参,拿到的是undefined,推入数组的内容为空 - 核心入组方法未调用:全程没有执行
pushGamerIntoArray方法,数组不会自动填充数据 getRandomNumber方法存在冗余参数:形参random无实际作用,属于无效代码
修复后的可运行代码
const luckGame = { _lucky: [], _unlucky: [], // 接收姓名后直接触发随机入组逻辑 pushGamer(name) { this.pushGamerIntoArray(name); }, // 移除冗余参数 getRandomNumber () { return Math.floor(Math.random() * 2); }, // 移除多余的return和花括号,新增姓名入参执行入组逻辑 pushGamerIntoArray (name) { if (this.getRandomNumber() === 0 ) { this._lucky.push(name); } else { this._unlucky.push(name); } }, }; // 修正调用对象,直接调用luckGame的方法 luckGame.pushGamer('John'); luckGame.pushGamer('Nick'); luckGame.pushGamer('Maria'); luckGame.pushGamer('Sarah'); luckGame.pushGamer('Ron'); luckGame.pushGamer('Lisa'); console.log(luckGame._lucky); console.log(luckGame._unlucky);
内容的提问来源于stack exchange,提问作者bohdan bohdan
相关产品推荐
相关产品推荐

