JavaScript if语句测试一个或另一个但不是两个

Chr*_*ris 2 javascript if-statement

你好伙伴StackOverflowers.我现在有一个脑屁,我似乎无法弄清楚这一点.

我有以下代码

if ((n % 3 === 0 || n % 5 === 0) &&( n % 3 !== 0 && n % 5 !== 0))
    {
        return true;
}
else {
    return false;
}
Run Code Online (Sandbox Code Playgroud)

基本上我需要测试数字是否是3 ||的倍数 5但不是两者的倍数.

但是当我输入任何我输入的数字时(无论它是3 || 5 ||的倍数),测试总是失败.我原本以为这可以在一个声明中执行.

这段代码确实可行.

if (n % 3 === 0 || n % 5 === 0)
{
    if( n % 3 === 0 && n % 5 === 0)
    {
        return false;
    }
    else {
       return true;
    }
}
else {
    return false;
}
Run Code Online (Sandbox Code Playgroud)

但我想知道在第一次测试中我缺少了什么.我希望所有的测试都在一个像,但就像我说我有一个脑屁,无法弄清楚我错过了什么.

Jac*_*cob 9

您也可以使用XOR运算符

return  (n % 3 === 0 ^ n % 5 === 0);
Run Code Online (Sandbox Code Playgroud)

  • 这会产生按位XOR,而不是逻辑XOR.如果你喜欢简洁的伏都教,试试`!(n%3)!==!(n%5)`.但是那种代码最好不会找到生产方式. (3认同)

Che*_*min 7

如果它可以被3和5整除,它将被15整除.

请尝试以下条件

if ((n % 3 === 0 || n % 5 === 0) && ( n % 15 !== 0))
Run Code Online (Sandbox Code Playgroud)