JavaScript中getRandomCard函数异常:始终返回11的问题求助
问题分析与解决:二十一点getRandomCard函数始终返回11
问题原因
你这段代码有两个关键错误,导致函数永远返回11:
- 赋值/比较运算符混淆:
if (randomNumber = 1)里用的是赋值运算符=,不是比较用的==或===。这行代码会直接把1赋值给randomNumber,而这个赋值表达式的结果也是1,会直接触发第一个if分支返回11,后面的逻辑根本不会执行。 - else if条件写法错误:
randomNumber = 11, 12, 13不仅错用了赋值运算符,逗号运算符在这里只会取最后一个值13,就算改成比较,这种写法也无法判断数值是否是11、12、13中的一个。
解决方法
修正运算符和条件判断逻辑,这里提供两种可行的写法:
写法一:使用逻辑或(||)判断
function getRandomCard() { let randomNumber = Math.floor(Math.random() * 13) + 1; if (randomNumber === 1) { return 11; } else if (randomNumber === 11 || randomNumber === 12 || randomNumber === 13) { return 10; } else { return randomNumber; } } console.log(getRandomCard());
写法二:使用数组includes方法(更简洁)
function getRandomCard() { let randomNumber = Math.floor(Math.random() * 13) + 1; if (randomNumber === 1) { return 11; } else if ([11, 12, 13].includes(randomNumber)) { return 10; } else { return randomNumber; } } console.log(getRandomCard());
内容的提问来源于stack exchange,提问作者swishswisher
相关产品推荐
相关产品推荐

