什么是“~"运算符在该脚本中执行
what does "~" operator do in this script?
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
。
相关文章:
- 在服务器端脚本执行后关闭选项卡
- 脚本执行多次
- 根据屏幕大小阻止脚本执行
- 检测TAB键并使脚本执行成为条件
- 脚本执行,但代码隐藏不执行
- 如何使用应用程序脚本执行API从谷歌工作表中提取数据
- 为什么设置window.location.htm不会停止脚本执行
- document.write(“anything”) 不会在 Internet Explorer 中作为外部脚本执行
- Extjs4 和 IE8 :选项卡上的 beforeclose 事件会抛出“无法从释放的脚本执行代码”
- 具有 asyc 属性的脚本仍会阻止其他脚本执行
- 如何在特定行暂停 JS 脚本执行
- JavaScript - 在高负载脚本执行之前绘制 html-mask
- 重新加载 Chrome 扩展程序内容脚本执行环境
- 将脚本执行保留在新打开的页面中
- 在脚本执行结束时关闭弹出窗口
- JavaScript 脚本执行时间太长.获取脚本需要太长时间提示
- 为什么 url 中的“#”会阻止 jquery 脚本执行
- 脚本执行两次,但时间戳相同
- Javascript setTimeout 会停止其他脚本执行吗?
- jQuery 在单击事件中的 if 条件后停止脚本执行