操作符
1、& 和 | 和 ^
按bit
位与或异或操作
var a = 1;//0000 0001
var b = 3;//0000 0011
console.log(a&b);//1
console.log(a|b);//3
console.log(a^b);//2

& | ^运算过程
&位与操作:一个为假则假
|位或操作:一个为真则真
^位异或操作:相同位为假,不同位为真
2、<< 和 >> 和 >>>
var a = 13;//二进制1101
console.log(a<<2);//左移运算,1101后面添加两个00=110100,输出52
console.log(a>>2);//右移运算,1101除去后面两位=11,输出3
console.log(a>>>2);//无符号右移,正数时跟>>结果一样,负数时得到的数非常大(略)
类型判断
有三个运算符:
typeof 返回该类型的字符串形式
number,string,undefined,boolean 直接返回类型的字符串形式
object,array,null会返回object
function 返回 function
instanceof 返回布尔值,instanceof 检测的是原型。
A instanceof B 判断A是否是B的实例
class A{}
class B extends A{}
let a = new A();
let b = new B();
console.log(
a instanceof A,//true,直接继承
a instanceof B,//false,不继承
b instanceof A,//true,间接继承A是b的爷爷
b instanceof B//true,直接继承
);
instanceof不能检测基本类型。 "asd" instanceof String == false
=== 全等于,返回布尔值
A === B 只有A,B的值和类型都一致时才返回true
如果是对象的比较,只有是同一个对象(地址相同)才返回true。