js运算符的一些特殊用法

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

js位运行符的运用。 js运算符的使用技巧。

是否包含指定字符: ~

~"str1".indexOf("str2")

str1 被查找的字符串 str2 查找的字符串 如果 str1 不含有 str2 ,则返回数字 0 。

例:

rush:js;"> 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 整数

例:

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

交换两个数字的值: ^=

使用位运行符:

rush:js;"> var num1 = 1,num2 = 2; num1 ^= num2; num2 ^= num1; num1 ^= num2; console.log(num1,num2); //2 1

使用数组:

rush:js;"> 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

方法比较:

使用 << 的方式可以支持负数,** 需要用括号否则出错。 使用 ** 比较直观,没研究过 << 方法的任意数的任意次方的规律。

rush:js;"> 1<<3 //8 2**3 //8 -1<<3 //-8 -2**3 // 报错 -(2**3) //-8 3<<2 //12 错误 3**2 //9 正确

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

!str1.indexOf("str2")

例:

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

使用正则方式

rush:js;"> /^a/.test('abc') //a开头,true /c$/.test('abc') //c结尾,true

字符串转数字: +

+str

例:

rush:js;"> var str='123'; typeof(str) //string typeof(+str) //number

转为 Boolean 值: !!

!!obj

例:

!!'text' //true

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...