您的位置:首页 > Web前端 > JavaScript

js运算符的一些特殊应用

2017-11-10 09:37 309 查看
文章目录

是否包含指定字符: ~

取整: |

取半: >>

成长值评级: ||

判断奇偶: &

交换两个数字的值: ^=

2的n次方: << 和 ** 1 << n-1

是否是指定字符串开头: ! 和 ^

字符串转数字: +

转为 Boolean 值: !!

作者: 小文

来源: http://www.cnblogs.com/daysme/

时间: 2017/3/2 17:21:03

本文集合了了js运算符的一些特殊应用。

js位运行符的运用。

js运算符的使用技巧。


是否包含指定字符: ~

~"str1".indexOf("str2")


str1 被查找的字符串

str2 查找的字符串

如果 str1 不含有 str2 ,则返回数字 0 。

例:
var str1='abc';
var str2='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 整数

例:
var num=3;
if (num & 1) {
console.log("num是奇数"); //num是奇数
} else {
console.log("num是偶数");
}


回目录


交换两个数字的值: ^=

使用位运行符:
var num1 = 1, num2 = 2;
num1 ^= num2;
num2 ^= num1;
num1 ^= num2;
console.log(num1,num2); //2 1


使用数组:
var num1 = 1, num2 = 2;
num1 = [num2, num2 = num1][0];
console.log(num1,num2); //2 1


回目录


2的n次方: << 和 **
1 << n-1

使用位运行符:

2的n次方

例:2的3次方:
1<<3 //8


使用幂运行符:

个人觉得这个不如直接使用  的方式好。

x的y次方: 
x**y


例:2的3次方:
2**3
//8


方法比较:

使用 
<<
 的方式可以支持负数,
**
 需要用括号否则出错。

使用 
**
 比较直观,没研究过 
<<
 方法的任意数的任意次方的规律。
1<<3 //8
2**3 //8
-1<<3 //-8
-2**3 // 报错
-(2**3) //-8
3<<2 //12 错误
3**2 //9 正确


回目录


是否是指定字符串开头: ! 和 ^

!str1.indexOf("str2")


例:
var str1='abc';
var str2='a';
if(!str1.indexOf(str2)){
console.log('是开头')
}else{
console.log('不是开头')
}


使用正则方式
/^a/.test('abc') //a开头,true
/c$/.test('abc') //c结尾,true


回目录


字符串转数字: +

+str


例:
var str='123';
typeof(str) //string
typeof(+str) //number


回目录


转为 Boolean 值: !!

!!obj


例:
!!'text' //true


本文链接:http://www.cnblogs.com/daysme/p/6492398.html 

转载请注明出处[我的过去_博客园]:http://www.cnblogs.com/daysme/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: