这个脚本中的“〜”操作符做了什么?
这个问题在这里已经有了答案:
这个脚本中的“〜”操作符做了什么?
正如其他人指出的那样,它是一个按位运算符。 这一切都很好,但是在这个剧本中它的作用就是这个问题。 :-)
这个想法可能与你所说的完全相同:如果index
是一个数字,则进行splice
。 ~
操作符对其操作数的第一件事情是将其转换为数字(如果可以)。 如果不能,结果是NaN
(“不是数字”),这是错误的,所以条件将是错误的, splice
不会发生。
但是,这种转换并没有像我怀疑代码的作者所想的那样经常导致NaN
。 :-)
一些不会splice
随机事例:
~-1 === 0
还有一些会做splice
:
~"foo" === -1 ~0 === -1 ~1 === -2 ~2 === -3 ~true === -2 ~false === -1 ~-2 === 1 ~undefined === -1 ~null === -1 ~NaN === -1
可能并不理想,它试图与其中的一些splice
。 例如, true
将使它使用索引1
进行拼接, false
将为索引0
。