與==操作符一樣,比較操作符(>、<、>=、<=)可以將對(duì)象轉(zhuǎn)換成string或者number后再進(jìn)行比較 -- 對(duì)于number,比較值的大小;對(duì)于string,則比較字符在編碼表中出現(xiàn)的次序。與==操作符不一樣的是,==會(huì)將Date對(duì)象優(yōu)先轉(zhuǎn)換成string后再加以比較,而比較操作符則會(huì)對(duì)包括Date在內(nèi)的所有對(duì)象優(yōu)先轉(zhuǎn)換成number后再加以比較。其比較判斷的規(guī)則如下:
1.操作符兩邊如果有對(duì)象,將其轉(zhuǎn)換成number;如果無(wú)法轉(zhuǎn)換成number,則將其轉(zhuǎn)換成string。
2.經(jīng)過(guò)轉(zhuǎn)換后,如果操作符兩邊均為string,則進(jìn)行字符串比較;否則,只要有一邊出現(xiàn)number,則進(jìn)行數(shù)值比較。
3.如果操作符兩邊出現(xiàn)NaN,返回false。
4.0與-0相等。
實(shí)驗(yàn)
//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