关系操作符:<、>、<=、>=
在处理特殊情况时,遵循以下规则:
- 如果两个操作数都是数值,则执行数值比较
- 如果两个操作数都是字符串,则比较两个字符串对应的字符编码值
- 如果一个操作数是对象,则调用这个对象的valueOf()方法,用得到的结果按照前面的规则进行比较。如果对象没有valueOf()方法,则调用toString()方法,并用得到的结果再进行比较
- 如果一个操作数是布尔值,则先将其转换为数值,在进行比较
相等操作符:相等(==)、不相等(!=)、全等(===)、不全等(!==)
相等(==)、不相等( != ):先进行转换再进行比较。
在转换不同数据类型时,相等和不相等操作符遵循下列基本规则:
- 如果有一个操作数是布尔值,在比较时先转换为数值
- 如果一个操作数是字符串,另一个操作数是数值,在比较前先将字符串转换为数值
- 如果一个操作数是对象,另一个不是,则调用对象的valueOf()方法,用得到的基本类型值按照前面的规则进行比较;在比较时,遵循以下规则:
- null与undefined是相等的
- 要比较相等性之前,不能讲null和undefined转换为其他值
- 如果有一个操作数是NaN,则相等操作符返回false
- 如果两个操作数都是对象,则比较它们是不是同一个对象。如果两个操作数都指向同一个对象,则相等操作符返回true,否则,返回false
全等(===)、不全等:全等只在两个操作数未经转换就相等的情况下返回true