我不明白我写的这段代码

时间:2019-08-23 02:26:19

标签: javascript

我是初学者,需要您的帮助..

这是我为打印“签证”而写的。但是它说未定义

调用函数后,我想返回“ Visa” ..但是它不起作用..


function detectNetwork(cardNumber) {
  function visa() {
      let data = ["4","13","16"]
      for (let i of data ) {
        if ( cardNumber[0] === i && cardNumber.length === 19 ) {
          return "Visa"
        }
      }
    }
}

// detectNetwork('4123456789012')

感谢你们的回答,并感谢您给予良好的前任!!但实际上,这个问题是要使detectNetwork()函数

问题是


 // The 'Diner's Club' card number always starts with 38 or 39, and is a 14 digit number.

 // 'American Express' card numbers always start with 34 or 37, 15 digits

 // Visa card numbers always start with 4 and are 13, 16, or 19 digits long.

 // MasterCard card numbers are always 16 digits, beginning with 51, 52, 53, 54, or 55.

 // ex) detectNetwork('39345678901234') //  'Diner's Club'
 // ex) detectNetwork('343456789012345') // 'American Express'
 // ex) detectNetwork('4123456789012345678') // 'Visa'
 // ex) detectNetwork ('5112345678901234') // 'MasterCard'

  

我只希望detectNetwork()整理其中的每个功能

     

给出一个数字,“ detectNetwork”返回传入的数字是Diner's Club还是“ American Express”,“ Visa”或“ MasterCard”

这是我的代码

function detectNetwork(cardNumber) {
    if ( cardNumber.length === 14 ) {
      let num1 = cardNumber.slice(0,2);
        if ( num1 === "38" || num1 === "39" ) {
          return "Diner's Club";
        }
    } else if ( cardNumber.length === 15 ) {
      let num2 = cardNumber.slice(0,2) ;
        if (num2 === "34" || num2 === "37" ) {
          return "American Express";
      } else if (cardNumber.length === 19 || cardNumber.length === 13 || cardNumber.length === 16 ) {
          if ( cardNumber[0] === "4" ) {
          return "Visa";
        } else if ( cardNumber.length === 16 ) {
          let mastData = ["51", "52", "53", "54","55"]; 
            for (let i of mastData ) {
              if (mastData === i ) {
                return "MasterCard"
          }
        }
      }
    }
  }
}

2 个答案:

答案 0 :(得分:0)

您的函数detectNetwork仅定义签证功能,它不会以任何方式调用或使用其返回值。

要使用Visa()的返回值,您既需要调用它,又要以某种方式使用返回值。

只要将visa();添加到您的检测网络功能的底部,该功能应该可以调用该功能。然后,您需要确定对返回值要做什么。您可以将其分配给变量,将其记录到控制台,将其传递给另一个函数,简单地将其返回,或者使用返回值通常执行的任何其他操作。一些例子是:

   let value = visa(); // Save to variable

   console.log(visa()); // Log return value to console

   doSomething(visa()); // Pass value to another function

   return visa(); // Returns the value from visa

答案 1 :(得分:0)

您可以如下修改代码:
嵌套的Visa函数已被省略,数字的长度已增加到19,并添加了console.log以显示结果。
总而言之,您不清楚要做什么,您想知道一个号码是否可以有效用作Visa卡吗?

function detectNetwork(cardNumber) {
        let data = [4,13,16]
        for (let i of data ) {
          if ( cardNumber[0] == i && cardNumber.length == 19 ) {
          console.log("Visa");
            return "Visa"
          }
        }     
  }
  
   detectNetwork('4123456789012789012')