关系运算符


关系运算符用于测试两个值之间的关系,根据关系是否存在返回 truefalse,关系表达式的结果总是布尔值。

相等和不相等运算符

「==」和「===」用于比较两个操作数是否相等,相等返回 true,否则返回 false。「===」又称作严格相等运算符,不仅值相等,类型也要一致,而「==」则是比较宽松的值比较,必要时会进行类型转换。

「!=」和 「!==」是 「==」和「===」运算符的求反。

关于「===」运算符的注意项:

  • NaN和任何值都不想等,包括它自身!判断 x 是否为 NaN 可以通过 x!==x 来实现
  • 如果两个引用值指向同一个对象、数组或函数,则它们是想等的,否则尽管值相同,也是不相等的

比较运算符

比较运算符用于测试两个值之间的大小关系,包括 <><=>=。只有数字和字符串才能进行比较操作,不是数字或字符串的操作数需要进行类型转换:

  • 操作数为对象,如果 valueOf() 返回原始值,则直接使用这个原始值,否则使用 toString() 的转换结果进行比较
  • 对象转换为原始值后,如果两个操作数都是字符串,将依照字母表顺序进行比较
  • 对象转换为原始值后,如果至少一个操作数不是字符串,那么两个操作数都将转换为数字进行比较,0和-0相等,Infinity比任何数字都要大,-Infinity比任何数字都要小,如果其中一个操作数是 NaN,那么比较操作符总是返回 false

注:字符串比较区分大小写,所有大写字母都小于小写字母。关于字符串比较还可以通过 String.localCompare() 进行,如 'a'.localCompare('b'); 返回 -1

通过上面的类型转换规则可以看出,在进行数字和字符串操作的时候,与「+」运算符不同,「+」运算符更偏爱字符串,而比较运算符更偏爱数字。

in 运算符

in 运算符通常用于判断属性或元素是否存在与对象/数组中,它的左操作数是一个字符串或者可以转换为字符串,右操作数是一个对象:

in运算符

instanceof 运算符

instanceof 用于判断对象是否某个类(含父类)的实例,它的左操作数是一个对象,右操作数是标识对象的类:

instanceof 运算符

注:所有对象都是 Object 类的实例。


点赞 取消点赞 收藏 取消收藏

<< 上一篇: 算术运算符

>> 下一篇: 逻辑运算符