决定javascript语法的部分叫做ECMAScript,JavaScript的语法相比较java来说宽松了很多,同时也复杂了很多。在ECMAscript中进行关系符运算时,经常会遇到各种类型转换,大部分的类型转换都是自发的,在应用不同的操作符进行转换时,数据类型的转换又会有所不同。
javascript中的关系运算符包括‘>‘,‘<‘,‘>=‘,‘<=‘。
当两个做比较的操作数都是数字的时候,直接进行比较(当然了,这是废话)。
当两个操作数都是字符串的时候,比较字符串对应的字符编码值。var boo = ‘abc‘ > ‘Abc‘;boo的结果是true,这是因为‘a‘的编码值大于‘A‘
当一个操作数是数值时,将另一个转换为数值,然后在进行比较。‘23‘<5 false。 true<5 true。
当一个操作数是对象时,调用对象的valueOf()方法用得到的结果进行比较,如果没有valueOf()方法的话,改为调用 toString()方法
在这里有一个特别的存在,就是‘NaN‘。当进行‘a‘<3操作时,得到的结果是false,因为字母‘a‘不能转换成合理的数值,因此‘a‘就转换成了NaN,任何操作数与NaN进行比较都是false,这里有一个很奇怪的地方,
var re1 = NaN <3; //false
var re2 = NaN >3=; //false
这里是一个特殊存在