如果变量值为零,为什么变量前的感叹号会返回'true'?[重复]

问题描述 投票:0回答:1

我找了很多,但我找不到这个特殊情况的答案。

为什么这个表达式会返回 true?

let variable = 0
!variable // true

我知道 ! 标记检查是否有一个值 nullundefined但在这种情况下 variable 被定义。这是在欺骗我。0 真的认为是一个有效的值吗?

javascript variables operators exclamation-mark
1个回答
1
投票

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

0也被认为是布尔值false,所以当你使用 !variable时,你是在使用逻辑运算符,并说它要把变量的值改成相反的值,在布尔值中是真。

0 == false == !"1 == !""true"。

1 == true == !0 == !false!

在Javascript中被认为是false:false, null, undefined, "", 0, NaN。

被认为是true:true, 1, -0, "false". <- 最后一个是一个非空字符串,所以它的true

if( false || null || undefined || "" || 0 || NaN) //never enter
if( true && 1 && -1 && "false") //enter

https:/developer.mozilla.orgen-USdocsGlossaryFalsy。


1
投票

引用MDN网络文档的说法,逻辑NOT !:

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

所以在你的情况下,它返回true,因为 0 可转为假

你可以看看这个链接。https:/developer.mozilla.orgen-USdocsWebJavaScriptReferenceOperatorsLogical_Operators。

© www.soinside.com 2019 - 2024. All rights reserved.