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