我很难理解这个函数如何返回真或假,这取决于 num 是否可以被 100 整除。"不是"运算符是让我失望的东西。
function divisible(num) {
return !(num % 100)
}
我是这样写函数的:
function divisible(num) {
return num % 100 === 0 ? true : false;
}
第一个解决方案看起来更干净,我想了解它是如何工作的。
在javascript中,0
(零)是假的,这使得!0
(不是零)是真实的。
来自 MDN 文档关于虚假
假值(有时写为假)是在布尔上下文中遇到时被视为假的值。
JavaScript 使用类型转换在需要它的上下文(例如条件和循环)中将任何值强制转换为布尔值。
因此,在您的情况下,这些是等效的:
return num % 100 === 0 ? true : false;
return num % 100 === 0; // ternary not necessary; expression already evaluates to a boolean
return !(num % 100) // zero is falsy; negate to reverse it
a == 0
和!a
在 JavaScript 中是等价的,因为 0 是 Falsy,当在其上应用像!
这样的布尔运算符时,它将被视为false
。因此,仅当整数除法的余数0
时,!(x % y)
计算结果才true
,因为所有其他整数值都是真值。
注意,在JS中,0
代表falsy
,所有其他非空数值对应于truthy
,"在布尔上下文中"。如果num
能被 100 整除,则num%100
等于0
而否定0
即!(0)
是1
,这意味着true, the number is perfectly divisible by 100
。 否则,如果num%100
给出0
以外的值,并且<anything other than 0>
的否定是0
,则对应于false, the number is not completely divisible by 100