什么是!+ [] +!+ []在javascript中?

Ami*_*mit -9 javascript

嗨,我正在阅读一篇文章,发现相当奇怪的结果下面的代码在javascript返回2.

!+[]+!+[]
Run Code Online (Sandbox Code Playgroud)

任何人都可以解释.

Nie*_*sol 6

将表达式分解为正确的操作顺序,您有:

(!(+[])) + (!(+[]))
Run Code Online (Sandbox Code Playgroud)

首先,[]将其转换为数字+,结果是0.不要问我为什么,它只是这样:p可能埋在规范的某个地方.

!0 很简单 true

所以你最终得到了true + true,再次投射到数字,导致1 + 1 = 2

要获得9分,你需要重复9次:

!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[] == 9
Run Code Online (Sandbox Code Playgroud)