为什么我的测试通过了,即使它不符合我的逻辑门?
Why does my test pass, even though it doesn't meet my logic gate?
我正在研究 FCC 上的电话验证器。由于某种原因,这通过了 5555555555
。为什么我的逻辑门会通过这个数字?对于上下文,这不是我第一次尝试此代码。我已经添加了多个语句,嵌套的 if 语句,但它仍然没有捕捉到它。为什么这个评估为真?这是代码:
function telephoneCheck(str) {
if(str[0] === '1' || '(' && str.length >= 10) {
return true;
}
else {
return false;
}
}
telephoneCheck("5555555555");
您需要重申您正在比较的条件(|| '('
将始终为真):
if(str[0] === '1' || str[0] === '(' && str.length >= 10) {
这是因为 &&
的优先级高于 ||
运算符。因此,如果没有括号,表达式的 '(' && str.length >= 10
部分将首先计算。所以最终条件变成 str[0] === '1' || true
永远为真。因此,对于任何长度 >= 10
的字符串,您的代码都会 return 为真
我正在研究 FCC 上的电话验证器。由于某种原因,这通过了 5555555555
。为什么我的逻辑门会通过这个数字?对于上下文,这不是我第一次尝试此代码。我已经添加了多个语句,嵌套的 if 语句,但它仍然没有捕捉到它。为什么这个评估为真?这是代码:
function telephoneCheck(str) {
if(str[0] === '1' || '(' && str.length >= 10) {
return true;
}
else {
return false;
}
}
telephoneCheck("5555555555");
您需要重申您正在比较的条件(|| '('
将始终为真):
if(str[0] === '1' || str[0] === '(' && str.length >= 10) {
这是因为 &&
的优先级高于 ||
运算符。因此,如果没有括号,表达式的 '(' && str.length >= 10
部分将首先计算。所以最终条件变成 str[0] === '1' || true
永远为真。因此,对于任何长度 >= 10