javascript - "~"运算符在此脚本中做什么?

标签 javascript operators

<分区>

您好,我正在从特定索引中删除一个数组,我附带了这个脚本:

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/

相关文章:

c++ - 重载运算符&& 和||创建一个保存动态逻辑的类

c - C 上的短路评估

c - 逗号运算符 , 有什么作用?

Java:数组并在添加值时使用++运算符

javascript - 在新部分中使用 CSS 维护事件按钮的解决方案

Javascript document.forms 值不适用于 Internet Explorer

javascript - 如何在 C# 中清除 javascript SessionStorage

javascript - 此代码中的错误是什么?javascript 代码不起作用

javascript - Mongoose 复杂种群

C++:运算符,(逗号)似乎不起作用