2016-11-20 114 views
0
function checkNumber(cardNumber) { 

    var prefix = cardNumber.slice(0,2); 
    if ((prefix === '38' || prefix === '39') && cardNumber.length === 14) { 
     return 'Diner\'s Club'; 
    } else if ((prefix === '34' || prefix === '37') && cardNumber.length === 15) { 
     return 'American Express'; 
    } 
} 

该函数接受一串信用卡号并返回其网络名称。 EX:晚餐俱乐部网络始终以38或39开头,长度为14位数字......而美国运通网络始终以34或37开头,长度为15位数字。该函数返回正确的输出。为什么我的函数不能通过测试代码?

我的问题是为什么当我使用测试环境时,代码无法通过。它说:
“你应该尝试你的函数每个长度和前缀的组合,并确保它返回正确的网络。” 这是什么意思?有没有人有解释?

+0

这是因为,如果输入比34,37,38,39任何其他然后开始你的函数没有返回任何东西。请添加一个'else'块以返回所有其他情况 –

+0

我正在使用摩卡 –

+0

@AhmadZughayyer - 测试的样子是什么? – Quentin

回答

0

听起来好像你的功能不完整。无论您使用的测试环境是对除您提供的两个选项以外的其他测试环境执行一些测试。

0

你说的是什么“代码测试”?一个应用程序?

如果未满足前两个条件中的一个,则您的函数没有return

试试这个:

function checkNumber(cardNumber) { 

    var prefix = cardNumber.slice(0,2); 
    if ((prefix === '38' || prefix === '39') && cardNumber.length === 14) { 
     return 'Diner\'s Club'; 
    } else if ((prefix === '34' || prefix === '37') && cardNumber.length === 15) { 
     return 'American Express'; 
    } 
    else 
    { 
     return "Unknown Card"; 
    } 
} 

还是这个(可能更好):

function checkNumber(cardNumber) { 

    var prefix = cardNumber.slice(0,2); 
    if ((prefix === '38' || prefix === '39') && cardNumber.length === 14) { 
     return 'Diner\'s Club'; 
    } else if ((prefix === '34' || prefix === '37') && cardNumber.length === 15) { 
     return 'American Express'; 
    } 
    return "Unknown Card"; 
} 
相关问题