• 是否包含指定字符: ~
  • 取整: |
  • 取半: >>
  • 成长值评级: ||
  • 判断奇偶: &
  • 交换两个数字的值: ^=
  • 2的n次方: << 和 ** 1 << n-1
  • 是否是指定字符串开头: ! 和 ^
  • 字符串转数字: +
  • 转为 Boolean 值: !!
  • 转为数字类型:~~

1、是否包含指定字符: ~

~"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)
}

2、取整: |

num | 0

//num为正数时,相当于Math.floor()向下取整
//num为负数时,相当于Math.ceil()向上取整
// |后面必须是0,是0达到的是取整的效果,不是0,相当于转换为二进制之后相加的结果
//(4|4)=4 即转换为二进制之后100 |100 相加得到100=4

例子

1.3 | 0 //

3、取半: >>

num >> 1

//num 整数

例:求 50 的 1/2

50 >> 1 //

4、成长值评级: ||

需求1:
成长值为5是1星;
成长值为10是2星;
成长值为12是3星;
成长值为15是4星;
其他都是0星。

({'5':1,'10':2,'12':3,'15':4}[val] || 0);

//val 成长值。

5、判断奇偶: &

num & 1      //num 整数

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

6、交换两个数字的值: ^=

方法1:使用位运行符:

var num1 = 1, num2 = 2;
num1 ^= num2;
num2 ^= num1;
num1 ^= num2;
console.log(num1,num2); //2 1

方法2:使用数组:

var num1 = 1, num2 = 2;
num1 = [num2, num2 = num1][0];
console.log(num1,num2); //2 1

7、2的n次方: << 和 **

方法1:使用位运行符:

1 << n-1        //2的n次方

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

方法2:使用幂运行符:

 x**y    //x的y次方

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

方法比较:

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

1<<3 //
2**3 //
-1<<3 //-8
-2**3 // 报错
-(2**3) //-8
3<<2 //12 错误
3**2 //9 正确

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

!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

9、字符串转数字: +

+str

//例:

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

10、转为 Boolean 值: !!

!!obj

//例:
!!'text' //true

11、转为数字类型:~~

~~‘1’=1
~~true == 1
~~false == 0
~~"" == 0
~~[] == 0 ~~undefined ==0
~~!undefined == 1
~~null == 0
~~!null == 1

最新文章

  1. 【Java EE 学习 29 下】【JDBC编程中操作Oracle数据库】【调用存储过程的方法】
  2. 在RedHat上安装gcc,java 和 eclipse-rcp
  3. POJ 1840 Eqs
  4. Java基础之理解Annotation(与@有关,即是注释)
  5. 淘宝三角做法防CSS2D转换
  6. 用最直白的语言告诉你,hadoop是什么?
  7. 使用blktrace统计磁盘块I/O访问频率 + IO调度CFQ
  8. 模拟I2C从机程序
  9. 看小白如何解决ajax跨域问题
  10. 栈的C数组实现
  11. ListView添加节点
  12. checkbox、radio控件和文字不对其
  13. 【Java框架型项目从入门到装逼】第七节 - 学生管理系统项目搭建
  14. DVWA 黑客攻防演练(五)文件上传漏洞 File Upload
  15. Ubuntu14.04+Dell 7060安装无线/有线网络驱动
  16. 【CRM】Microsoft CRM-QueryExpression 成员
  17. Java EE之Form的get与post方法
  18. Oracle设置某张表为只读
  19. 力扣(LeetCode) 136. 只出现一次的数字
  20. Hadoop3集群搭建之——安装hadoop,配置环境

热门文章

  1. Vue——项目中接口返回值为函数回调,回调函数定义方法(Vue的方法给原生调用)
  2. C语言与汇编的嵌入式编程:求100以内素数
  3. HTML中的meta元素
  4. 无法打开物理文件 XXX.mdf&quot;,操作系统错误 5.5(拒绝访问) 的解决办法
  5. .NET中的字符串(2):你真的了解.NET中的String吗?
  6. 在Linux系统中使用ntfs、fat32格式的存储设备
  7. Cisco TrustSec(理解)
  8. Codeforces Global Round 5E(构造,思维)
  9. 洛谷 CF798C Mike and gcd problem
  10. Nginx 反向代理报400错误解决方法!