<分区>
您好,我正在从特定索引中删除一个数组,我附带了这个脚本:
var arr = [1,2,3,4];
var index = 2;
if (~index) arr.splice(index, 1);
我用谷歌搜索 ““~”运算符在这个脚本中做了什么?”
我找不到任何答案我想我做错了搜索任何人都可以向我解释这个运算符和正确搜索的名称是什么?
我有点怀疑这是在与 (!)(undefined) 进行比较,但不确定...
提前致谢
<分区>
您好,我正在从特定索引中删除一个数组,我附带了这个脚本:
var arr = [1,2,3,4];
var index = 2;
if (~index) arr.splice(index, 1);
我用谷歌搜索 ““~”运算符在这个脚本中做了什么?”
我找不到任何答案我想我做错了搜索任何人都可以向我解释这个运算符和正确搜索的名称是什么?
我有点怀疑这是在与 (!)(undefined) 进行比较,但不确定...
提前致谢
最佳答案
what does “~” operator do in this script?
正如其他人所指出的,它是 bitwise NOT operator .这一切都很好,但问题是它在这个 脚本中做了什么。 :-)
这个想法可能几乎就是您所说的那样:如果index
是一个数字,则执行拼接
。 ~
运算符对其操作数所做的第一件事就是将其转换为数字(如果可以)。如果不能,则结果为 NaN
(“不是数字”),这是错误的,因此条件将为假并且 拼接
不会发生.
但转换不会导致NaN
几乎我怀疑该代码的作者认为的那样频繁。 :-)
一些不会进行拼接
的事情的随机示例:
~-1 === 0
还有一些将做拼接
:
~"foo" === -1 ~0 === -1 ~1 === -2 ~2 === -3 ~true === -2 ~false === -1 ~-2 === 1 ~undefined === -1 ~null === -1 ~NaN === -1
尝试用其中一些进行 拼接
可能并不理想。例如,true
将使用索引 1
进行拼接,false
将使用索引 0
。
关于javascript - "~"运算符在此脚本中做什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17600726/