javascript条件语句不进入第二条语句
我刚刚学习完javascript的基础知识,所以我正在进行一个实践项目,该项目将获得一个信用卡号码,它将告诉你它是否有效以及它是什么类型的卡。我遇到的问题是,当在函数中传递一个卡号数组时,它只检查第一个if语句,即mastercard。我不知道为什么它不会进入第二个if语句。这是我的密码:javascript条件语句不进入第二条语句,javascript,Javascript,我刚刚学习完javascript的基础知识,所以我正在进行一个实践项目,该项目将获得一个信用卡号码,它将告诉你它是否有效以及它是什么类型的卡。我遇到的问题是,当在函数中传递一个卡号数组时,它只检查第一个if语句,即mastercard。我不知道为什么它不会进入第二个if语句。这是我的密码: let cardType; function getCreditCardNum(num) { let cardTypeAmexMasterCard = num.slice(0,2); if(car
let cardType;
function getCreditCardNum(num) {
let cardTypeAmexMasterCard = num.slice(0,2);
if(cardTypeAmexMasterCard >= 51 || cardTypeAmexMasterCard <= 55) {
cardType = "MasterCard";
}
else if(cardTypeAmexMasterCard == 34 || cardTypeAmexMasterCard == 37) {
cardType = "American Express";
}
else {
cardType = "INVALID CARD TYPE"
}
console.log(`Card Type is ${cardType}`);
}
let cardArray = [344234324];
getCreditCardNum(cardArray);
let-cardType;
函数getCreditCardNum(num){
让cardTypeAmexMasterCard=num.slice(0,2);
如果(cardTypeAmexMasterCard>=51 | | cardTypeAmexMasterCard,以下是您的问题之一:
if(cardTypeAmexMasterCard >= 51 || cardTypeAmexMasterCard <= 55) {
cardType = "MasterCard";
}
if(cardTypeAmexMasterCard>=51 | | cardTypeAmexMasterCard函数可能导致问题的原因是,一旦if
语句为“true”,它只运行该块中的代码
因此,如果第一个if
块为'true',那么您就不会运行其他检查。除此之外,如果前两个数字小于55cardTypeAmexMasterCard参数num只包含一个值,那么您的第一个语句将为true。控制台日志cardTypeAmexMasterCard和u将看到我在说什么。以及您的if状态ment也是错误的,应该是一个and语句,比如&。几个错误
.slice()
需要数组或字符串(在您的特定情况下)。然后您需要返回一个数字
- 您正在将整个数组传递给函数
getCreditCardNum(cardArray);
相反,您应该查找[0]
th键
- 检查范围时使用
&
函数getCreditCardNum(num){
设nn=Number(num.toString().slice(0,2));
如果(nn>=51&&nn,如果输出“万事达卡”然后第一个if
条件是true
。因此它不会转到if
链中的任何其他条件。一旦它找到一个true
条件,它就会使用该条件。这就是if
和else
工作的方式。你正在将数组与数字进行比较。逻辑也没有太多意义。为什么card编号是否是数组?请注意,else if
中的条件也会被第一个if
满足。因此,在任何逻辑条件下,else if
都不会被执行。(提示:34和37都小于55。)编辑:事实上,不是所有可能的数字都会满足第一个if
切片()也是一种数组原型方法,而不是string@RokoC.Buljan非常感谢。
if(cardTypeAmexMasterCard >= 51 && cardTypeAmexMasterCard <= 55)
let cardArray = 344234324;
getCreditCardNum(cardArray);
// then change this
let cardTypeAmexMasterCard = parseInt(num.toString().slice(0,2), 10);