Javascript “怎么说?”;不是";操作员在该功能中工作?
我很难理解这个函数如何根据num是否为100整除返回true或false。“not”接线员是让我恼火的人Javascript “怎么说?”;不是";操作员在该功能中工作?,javascript,function,conditional-operator,Javascript,Function,Conditional Operator,我很难理解这个函数如何根据num是否为100整除返回true或false。“not”接线员是让我恼火的人 function divisible(num) { return !(num % 100) } 我这样写函数: function divisible(num) { return num % 100 === 0 ? true : false; } 第一个解决方案看起来更干净,我想了解它是如何工作的。在javascript中,0(零)是,这使得!0(不是零)
function divisible(num) {
return !(num % 100)
}
我这样写函数:
function divisible(num) {
return num % 100 === 0 ? true : false;
}
第一个解决方案看起来更干净,我想了解它是如何工作的。在javascript中,
0
(零)是,这使得!0(不是零)
从
falsy(有时写为falsy)值是在布尔上下文中遇到时被视为false的值
JavaScript使用类型转换在需要的上下文(如条件和循环)中将任何值强制为布尔值
因此,在您的情况下,这些是等效的:
returnnum%100==0?真:假;
返回数值%100==0;//没有必要;表达式的计算结果已为布尔值
回来!(num%100)//零表示错误;否定来逆转它
a==0
和!一个
在JavaScript中是等价的,因为0是Falsy,并且当应用像这样的布尔运算符时代码>在其上,它将被视为false
。因此,!(x%y)
仅当整数除法的余数为0
时,才会计算为true
,因为所有其他整数值都是真实的。请注意,在JS中,0
代表falsy
,其他每一个非空数值对应于truthy
,“在布尔上下文中”。
如果num
可被100整除,则num%100
将等于0
以及0
的否定,即!(0)
是1
,这意味着为真,数字完全可以被100整除。
否则,如果num%100
给出的值不是0
,并且
的反运算是0
,对应于false,则该数字不能完全被100整除如果num%100==0,并且你对其进行反运算,则它变为1,因此为true,否则如果你对其他任何0进行反运算,因此,请看一看这是一个肮脏的使用代码>。我知道您一般都在问如何代码>有效,但在示例中,返回num%100!==0确实更具可读性。是否更喜欢,这是个人的偏好!(数值%100)
或num%100!==0,但正在添加?true:false(或任何布尔表达式)之后的值是非常冗余的。0的错误实际上会使!0是真的,不是真的,因为
是一个布尔运算符,它的结果是一个布尔值。“其他每个值都对应于true”,这不是完全正确的,空字符串、null、未定义和NaN也会对应于false哦,一个新手错误。谢谢你指出这一点。已更正…iffa
是一个数字,而不是NaN
。