Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/375.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_Variables_Operators_Exclamation Mark - Fatal编程技术网

Javascript 为什么变量前面的感叹号返回';正确';如果变量值为零?

Javascript 为什么变量前面的感叹号返回';正确';如果变量值为零?,javascript,variables,operators,exclamation-mark,Javascript,Variables,Operators,Exclamation Mark,我看了很多,但是我找不到这个特殊案例的答案 为什么此表达式返回true let variable = 0 !variable // true 我知道标记检查值是否为空或未定义,但在这种情况下定义了变量。这是在骗我。 0真的被认为是有效值吗?引用MDN Web文档,逻辑值不是: 如果其单个操作数可以转换为true,则返回false;否则,返回true 因此,在您的例子中,它返回true,因为0可以转换为false 您可以查看此链接:引用MDN Web文档,逻辑不是: 如果其单个操作数可以转换为t

我看了很多,但是我找不到这个特殊案例的答案

为什么此表达式返回
true

let variable = 0
!variable // true
我知道
标记检查值是否为
未定义
,但在这种情况下定义了
变量
。这是在骗我。
0
真的被认为是有效值吗?

引用MDN Web文档,逻辑值不是

如果其单个操作数可以转换为true,则返回false;否则,返回true

因此,在您的例子中,它返回true,因为
0
可以转换为false


您可以查看此链接:

引用MDN Web文档,逻辑不是

如果其单个操作数可以转换为true,则返回false;否则,返回true

因此,在您的例子中,它返回true,因为
0
可以转换为false


您可以查看此链接:

!被称为逻辑NOT运算符。它反转操作数(或条件)的布尔结果

0也被视为布尔值false,因此当您使用!变量您正在使用逻辑运算符,并指示它将变量的值更改为相反的值,即布尔值为真

0==false==!1 == !真的

1==真==!0 == !假的

在Javascript中,被认为是错误的: false,null,未定义,“,0,NaN

这被认为是正确的:
对,1,-0,“错” !!被称为逻辑NOT运算符。它反转操作数(或条件)的布尔结果

0也被视为布尔值false,因此当您使用!变量您正在使用逻辑运算符,并指示它将变量的值更改为相反的值,即布尔值为真

0==false==!1 == !真的

1==真==!0 == !假的

在Javascript中,被认为是错误的: false,null,未定义,“,0,NaN

这被认为是正确的:
对,1,-0,“错”!是非门的布尔运算符。我们将1视为真,将0视为假。所以!!0==1==true。熟悉逻辑运算符是的,是的。关键是我不知道0被认为是“false”。非常感谢。是非门的布尔运算符。我们将1视为真,将0视为假。所以!!0==1==true。熟悉逻辑运算符是的,是的。关键是我不知道0被认为是“false”。谢谢。我明白了,现在清楚了。欺骗我的是,我不知道0被认为是“错误的”。谢谢。欢迎=)我在示例中添加了一些更真实的值,知道=)可能有用。我明白了,现在已经很清楚了。欺骗我的是,我不知道0被认为是“错误的”。谢谢。欢迎=)我在示例中添加了一些更真实的值,了解=)可能会有用
if( false || null || undefined || "" || 0 || NaN) //never enter
if( true && 1 && -1 && "false") //enter