js运算符的一些特殊用法
本文集合了了js运算符的一些特殊应用。
js位运行符的运用。
js运算符的使用技巧。
是否包含指定字符:~
~"str1".indexOf("str2")
str1被查找的字符串
str2查找的字符串
如果str1不含有str2,则返回数字0。
例:
varstr1='abc'; varstr2='a'; if(~str1.indexOf(str2)){ console.log('有'+str2)//有a }else{ console.log('无'+str2) }
取整:|
num|0
num整数
例:
1.3|0//1
取半:>>
num>>1
num整数
例:求50的1/2
50>>1//25
有除号/干嘛不用呢?多好呀:50/2//25
成长值评级:||
需求1:
成长值为5是1星;
成长值为10是2星;
成长值为12是3星;
成长值为15是4星;
其他都是0星。
({'5':1,'10':2,'12':3,'15':4}[val]||0);
val成长值。
判断奇偶:&
num&1
num整数
例:
varnum=3; if(num&1){ console.log("num是奇数");//num是奇数 }else{ console.log("num是偶数"); }
交换两个数字的值:^=
使用位运行符:
varnum1=1,num2=2; num1^=num2; num2^=num1; num1^=num2; console.log(num1,num2);//21
使用数组:
varnum1=1,num2=2; num1=[num2,num2=num1][0]; console.log(num1,num2);//21
2的n次方:<<和**
1< 使用位运行符: 2的n次方 使用幂运行符: 个人觉得这个不如直接使用幂的方式好。 x的y次方:x**y 例:2的3次方:2**3//8 方法比较: 使用<<的方式可以支持负数,**需要用括号否则出错。 !str1.indexOf("str2") 例: 使用正则方式 +str 例: !!obj 例: !!'text'//true
例:2的3次方:1<<3//8
使用**比较直观,没研究过<<方法的任意数的任意次方的规律。
1<<3//8
2**3//8
-1<<3//-8
-2**3//报错
-(2**3)//-8
3<<2//12错误
3**2//9正确
是否是指定字符串开头:!和^
varstr1='abc';
varstr2='a';
if(!str1.indexOf(str2)){
console.log('是开头')
}else{
console.log('不是开头')
}
/^a/.test('abc')//a开头,true
/c$/.test('abc')//c结尾,true
字符串转数字:+
varstr='123';
typeof(str)//string
typeof(+str)//number
转为Boolean值:!!