Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript “怎么说?”;不是";操作员在该功能中工作?_Javascript_Function_Conditional Operator - Fatal编程技术网

Javascript “怎么说?”;不是";操作员在该功能中工作?

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(不是零)

我很难理解这个函数如何根据num是否为100整除返回true或false。“not”接线员是让我恼火的人

    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哦,一个新手错误。谢谢你指出这一点。已更正…iff
a
是一个数字,而不是
NaN