什么是“~"运算符在该脚本中执行

what does "~" operator do in this script?

本文关键字:脚本 执行 运算符 quot 什么      更新时间:2023-09-26

Hi-im从特定索引中删除一个数组,我带来了这个脚本:

var arr = [1,2,3,4];
var index = 2;
if (~index) arr.splice(index, 1);

我在"what does "~" operator do in this script?"上搜索,找不到任何答案。我想我搜索错了。有人能解释一下这个操作员吗?他叫什么名字才能进行正确的搜索?

我有点怀疑这是在与(!)(未定义)进行比较,但不确定。。。

提前感谢

"~"操作符在这个脚本中做什么?

正如其他人所指出的,它是按位NOT运算符。这一切都很好,但它在这个脚本中做了什么是个问题。:-)

这个想法是可能按照你说的做:如果index是一个数字,就做splice~运算符对其操作数所做的第一件事是将其转换为数字(如果可以的话)。如果不能,则结果为NaN("不是数字"),这是false,因此条件为false,splice不会发生。

但转换并没有像我怀疑该代码的作者所想的那样频繁地导致NaN。:-)

一些不会做splice:的事情的随机例子

~-1===0

一些执行splice:

~"foo"===-1~0====-1~1===-2~2===-3~真===-2~ false===-1~-2====1~未定义===-1~null===-1~ NaN==-1

它试图用其中的一些来做splice可能并不理想。例如,true将使用索引1进行拼接,false将是索引0