!+(不是加字符串)在 JavaScript 中是啥意思? [复制]

Posted

技术标签:

【中文标题】!+(不是加字符串)在 JavaScript 中是啥意思? [复制]【英文标题】:What does !+ (not plus string) mean in JavaScript? [duplicate]!+(不是加字符串)在 JavaScript 中是什么意思? [复制] 【发布时间】:2022-01-17 02:20:51 【问题描述】:

!+(添加感叹号)在 JavaScript 中是什么意思?

为什么!+"000" 是真的? 为什么!+"0010" 是假的?

尝试:

!+"000" // true
!+"00010" // false
!+"0a0" // true
!+"0,0" // true
!+[0,0,0] // true
!+[0,1,0] // true
true+"000" // true000

我尝试过搜索:

In javascript, why is "0" equal to false, but when tested by 'if' it is not false by itself? What does "!--" do in JavaScript? What is the !! (not not) operator in JavaScript?

这里我看到了代码:JS - Check if string contain only 0

此信息在 Internet 上很难找到。

【问题讨论】:

这是两个独立的一元运算符 参见 What does this symbol mean in JavaScript? 和 MDN 上关于 expressions and operators 和 statements 的文档。可以组合运算符。您不会询问所有可能的组合,对吧? true + "000" 不使用一元 +,而是使用二元。 specification 详细解释了它的作用。 【参考方案1】:

+ 是一元加号。它将后面的表达式转换为数字。

然后,! 否定后面的表达式:如果它为真,则结果为假。如果为假,则结果为真。

几个例子:

!+"000"
!0 // because '000', when converted to a number, is 0
true

!+"00010"
!10 // because "00010", when converted to a number, is 10
false // because 10 is truthy

!+[0,1,0]
!NaN // because arrays can't be converted to numbers directly (usually)
true

【讨论】:

以上是关于!+(不是加字符串)在 JavaScript 中是啥意思? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

和 " " 以及没有引号在 Javascript 中是啥意思?

(R) forceNetwork 警告消息:“看起来源/目标不是零索引。这在 JavaScript 中是必需的,因此您的绘图可能无法呈现”

javascript 传递参数中带加号自动变成了空格

为啥MYSQL中字符串有时要加双引号,有时不要?

js的object的key是不是有顺序

JavaScript对象