为什么`+! {} [true]` 计算结果为 1?

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

在 JavaScript 中,以下代码行给出的答案为 1

+ ! {} [true]

我不明白怎么办?

任何大师的解释都值得赞赏。

javascript
2个回答
4
投票

{}
是一个空对象。

所以

{}[0]
{}[true]
{}[1]
等..是
undefined

添加

!
{}[0]
转换为
boolean
,返回相反的值。 (
undefined
变为
false
,因此返回
true
)。

添加

+
将其转换为
int
,因此
true
变为
1


2
投票

我尝试通过代码来解释它。

var emptyObject = {};
    valueOfUndefinedKey = emptyObject['key_not_exists'],
    itsNot = !valueOfUndefinedKey ,
    finalConvertedNumber = +itsNot ;

console.log(
    emptyObject,
    valueOfUndefinedKey,
    itsNot,
    finalConvertedNumber
) 

打印

Object {}

undefined

true

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