为了账号安全,请及时绑定邮箱和手机立即绑定

javascript !~array.indexOf('some')怎么理解?

javascript !~array.indexOf('some')怎么理解?

一只萌萌小番薯 2019-02-05 10:06:33
如题!~array.indexOf('some')和array.indexOf('some')!=-1是一样的吗
查看完整描述

3 回答

?
翻阅古今

TA贡献1780条经验 获得超5个赞

是一样的,这是另外一种写法。~是位运算符。表示把array.indexOf('some')移位后-1就是0,而如果数组中含有some,结果就不会是0.然后再转换成boolean.不过题目里的两个表达式的逻辑似乎是反了.!!~array.indexOf('some')

查看完整回答
反对 回复 2019-03-16
?
紫衣仙女

TA贡献1839条经验 获得超15个赞

~ 是 js 中的按位取反运算符

~1 = -2
~0 = -1
~-1 = 0

indexOf 是 array 的一个方法,如果后面的元素在这个 array 中,则返回对应下标,如果不在,则返回 -1

第一种形式, indexOf 方法后在按位取反,表示的是元素不在这个数组中
第二种形式,表示的是元素在这个数组中

所以两个表示的意思相反

在 es6 之后,数组多了一个 includes 方法,array.includes(some) 返回一个 Boolean 值,更加语义化。


查看完整回答
反对 回复 2019-03-16
?
互换的青春

TA贡献1797条经验 获得超6个赞

你是指if判断吗? 是不一样的。
-1在if判断中等同于true,也就是说会执行if内的代码块。只有if(0)才不会执行,其他数字都会执行。

查看完整回答
反对 回复 2019-03-16
  • 3 回答
  • 0 关注
  • 1106 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信