我正在研究FCC上的电话验证器。出于某种原因,它通过了5555555555
。为什么我的逻辑门会通过这个数字?对于上下文,这不是我第一次尝试此代码。我添加了多个语句,嵌套了if语句,但仍然无法捕获它。为什么这算是正确的?这是代码:
function telephoneCheck(str) {
if(str[0] === '1' || '(' && str.length >= 10) {
return true;
}
else {
return false;
}
}
telephoneCheck("5555555555");
答案 0 :(得分:2)
您需要重述要比较的条件(|| '('
始终为真):
if(str[0] === '1' || str[0] === '(' && str.length >= 10) {
这是由于&&
的优先级比||
运算符高。因此,如果没有括号,将首先计算表达式的'(' && str.length >= 10
部分。因此最终条件变为str[0] === '1' || true
,这将永远是正确的。因此,对于长度大于等于10的任何字符串,您的代码都将返回true。