求助:使用switch语句实现角色等级对应生命值计算函数
修正后的角色生命值计算函数
你的代码存在几个核心问题:
- 参数命名使用了JS内置构造函数
Number,易引发命名冲突,建议改为level - switch语句的判断对象错误,应该用传入的等级参数而非函数自身
- 函数未返回对应生命值,反而在case里递归调用做测试,会触发无限递归
以下是正确实现:
var determineHP = function(level) { switch (level) { case 0: return 100; case 1: return 150; case 2: return 180; case 3: return 190; default: // 处理未定义等级的情况,可根据需求调整默认值 return 100; } } // 外部测试函数逻辑 console.log(determineHP(0) === 100); // true console.log(determineHP(1) === 150); // true console.log(determineHP(2) === 180); // true console.log(determineHP(3) === 190); // true
关键说明:
- 用
level作为参数名,规避与内置对象的命名冲突 - switch判断目标为传入的
level参数,匹配后直接返回对应生命值 - 新增
default分支处理未定义等级的场景,提升代码鲁棒性 - 测试代码放在函数外部,避免递归调用导致的栈溢出
内容的提问来源于stack exchange,提问作者eric toll
相关产品推荐
相关产品推荐

