【发布时间】:2012-12-06 03:55:17
【问题描述】:
我正在尝试做一些简单的测试来帮助我进一步了解 javascript 知识(这很新鲜)。目标 1 是打印 1-100 不能被 5 或 3 整除的数字。
我尝试了以下方法:
for (var i = 1; i <= 100; i ++)
{
if (i%3 !== 0 || i%5 !== 0){
console.log(i);
}
}
这会记录从 1 到 100 的每个数字,我不知道为什么。可能是这里最简单的问题,但它让我很头疼!
【问题讨论】:
-
它实际上并没有记录每个数字 - 它会跳过每一个 15 的倍数!
-
嗯。感谢您没有完全放弃它,因为我真的很想在这里学习。我以为||表示“或”,所以如果 i%3 为 0(这意味着它可以被 3 整除),它不应该打印这些数字吗?
-
你忘记了另一个案例:
i % 5 !== 0 -
我想我现在明白了。但是在上面的代码中,如果
i===3,不应该使i%3!==0为假,这意味着i%5!==0甚至不应该评估吗? -
您正在使用
||,逻辑or运算符;如果左侧条件或右侧条件为真,则整个条件评估为真。顺便说一句,根据德摩根定律,i%3 !== 0 || i%5 !== 0与i%3 == 0 && i%5 == 0的含义完全相同。
标签: javascript fizzbuzz