位运算符 和 类型检测

操作符

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。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。