"not"运算符在此函数中如何工作?



我很难理解这个函数如何返回真或假,这取决于 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

最新更新