JavaScript实验:比较操作符>、<、>=、<=

==操作符一样,比较操作符(><>=<=)可以将对象转换成string或者number后再进行比较 -- 对于number,比较值的大小;对于string,则比较字符在编码表中出现的次序。与==操作符不一样的是,==会将Date对象优先转换成string后再加以比较,而比较操作符则会对包括Date在内的所有对象优先转换成number后再加以比较。其比较判断的规则如下:

  1. 操作符两边如果有对象,将其转换成number;如果无法转换成number,则将其转换成string。
  2. 经过转换后,如果操作符两边均为string,则进行字符串比较;否则,只要有一边出现number,则进行数值比较。
  3. 如果操作符两边出现NaN,返回false。
  4. 0与-0相等。

实验

//In comparison, Date object is converted to number
var d = new Date();  
var s1 = "Thu Mar 27 2008 14:57:11 GMT+0800 (CST)";  
var s2 = "Thu Mar 27 2099 14:57:11 GMT+0800 (CST)";  
var n1 = d.valueOf() - 1000;  
var n2 = d.valueOf() + 1000;  
console.log(d > s1);//false, d is converted to number, and that number is further converted to string. It is a string comparison here.  
console.log(d > s2);//false  
console.log(d > n1);//true  
console.log(d > n2);//false

console.log("11" > 3);//true  

本文实验代码: http://jsfiddle.net/cshao/7nCQw/