Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript条件语句不进入第二条语句_Javascript - Fatal编程技术网

javascript条件语句不进入第二条语句

javascript条件语句不进入第二条语句,javascript,Javascript,我刚刚学习完javascript的基础知识,所以我正在进行一个实践项目,该项目将获得一个信用卡号码,它将告诉你它是否有效以及它是什么类型的卡。我遇到的问题是,当在函数中传递一个卡号数组时,它只检查第一个if语句,即mastercard。我不知道为什么它不会进入第二个if语句。这是我的密码: let cardType; function getCreditCardNum(num) { let cardTypeAmexMasterCard = num.slice(0,2); if(car

我刚刚学习完javascript的基础知识,所以我正在进行一个实践项目,该项目将获得一个信用卡号码,它将告诉你它是否有效以及它是什么类型的卡。我遇到的问题是,当在函数中传递一个卡号数组时,它只检查第一个if语句,即mastercard。我不知道为什么它不会进入第二个if语句。这是我的密码:

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',那么您就不会运行其他检查。除此之外,如果前两个数字小于55
cardTypeAmexMasterCard参数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);