〜[]构造如何在JavaScript中工作?

Den*_*nis 8 javascript brackets tilde

我遇到了一个无法解释的JavaScript代码.例如:

  • +[]===0
  • -[]===0
  • ~[]===-1
  • ~-~[]===-2
  • ~-~-~-~-~[]===-5
  • ~-~-~-~-~[]+~[]===-6
  • ~+~[]===0
  • ~+~+~[]===-1
  • ~+~+~+~[]===0

你能解释一下这些表达的逻辑吗?

Mar*_*c B 11

[] 是一个空数组对象,所以:

+ []:强制空数组为正整数,又称为0,这是===到0
- []:强制空数组为负整数,又为0,这是===到0〜
[]:按位NOT空数组,其计算结果为-1,这是===到-1
~ - 〜[]:否定的NOTted空数组:~-(-1) -> ~1 -> -2

等等...