js的几个特殊的运算符略解

       js运算符的一些特殊应用及使用技巧。

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

~"str1".indexOf("str2")

含义为:str1 被查找的字符串

str2 查找的字符串

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

2.取半: >>

num >> 1

num 整数

例:求 50 的 1/2

50 >> 1 //25

有点多此一举了,不建议使用

3.取整: |

num | 0

num 整数

例:

1.3 | 0 //1

4.判断奇偶: &

num & 1

num 整数

例:

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

5.交换两个数字的值: ^=

_使用数组:

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

_使用位换算符:

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

6. 2的n次方: << 和 **

1 << n-1

使用位运行符:<<

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

使用幂运行符:

x的y次方: x**y

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

方法比较:

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

eg:

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

等等

原文地址:https://www.cnblogs.com/xy88/p/11421259.html