index = ~~this.userIndex
~~ 双破折号 如果是数字返回数字,如果不是数字 返回0
这个运算符有点意思:按位非【~】
先来几个例子:
~undefined: -1
~false: -1
~true: -2
~10:-11
找出规律了吧~~
再说一下运用场景:
之前判断字符串是否存在是这样写:
1
2
3
4
5
6
|
var str = "sdfjh2kdd" ; if ( str.indexOf( "2" )>-1 ){ console.log( "存在" ) } else { console.log( "不存在" ) } |
现在可以这样写:
1
2
3
4
5
6
7
|
var str = "sdfsdfs233" ; if ( ~str.indexOf( '2' ) ){ console.log( "存在" ) } |
位运算的效率会比运算符高,如果不了解的也正好学习一下,免得看到【按位非~】运算符一脸懵,高级程序设计里面有一章是介绍这个的,可以回去翻一番。