这个奇怪的javascript表达式的解释是什么?

这个奇怪的javascript表达式的解释是什么?,javascript,Javascript,在JavaScript中,以下代码行给出的答案为1 + ! {} [true] 我不明白怎么回事 任何大师的解释都是值得赞赏的。{}是一个空对象 所以{}[0]或者{}[true]或者{}[1]等等。。是否未定义 添加将{}[0]强制转换为布尔值,返回相反的值。(undefined变为false,因此返回true) 添加+将其转换为int,因此true变成1我试图通过代码来解释它 var emptyObject = {}; valueOfUndefinedKey = emptyObje

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

+ ! {} [true]
我不明白怎么回事


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

{}
是一个空对象

所以
{}[0]
或者
{}[true]
或者
{}[1]
等等。。是否
未定义

添加
{}[0]
强制转换为
布尔值
,返回相反的值。(
undefined
变为
false
,因此返回
true


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

我试图通过代码来解释它

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

console.log(
    emptyObject,
    valueOfUndefinedKey,
    itsNot,
    finalConvertedNumber
) 
哪张照片

Object {}

undefined

true

1

+!{}[0]
让我试着去理解它的意思…@elclars哦,我喜欢那段视频。相关:没有几分钟,这个谜题就解决了。我爱你们“如此”的社区。非常感谢。问题是否从[0]更改为[true]?否,
{}
不是未定义的。这是一个空的物体。@RomainBraun:事实上,这比看起来更复杂。我已经发布了一个解释:加上一个+铸造技巧。我刚读完这篇文章就需要它。