ECMAScript సంబంధపరమైన ఆపరేషన్

关系运算符执行的是比较运算。每个关系运算符都返回一个布尔值。

常规比较方式

关系运算符小于、大于、小于等于和大于等于执行的是两个数的比较运算,比较方式与算术比较运算相同。

每个关系运算符都返回一个布尔值:

var bResult1 = 2 > 1	//true
var bResult2 = 2 < 1	//false

不过,对两个字符串应用关系运算符,它们的行为则不同。许多人认为小于表示“在字母顺序上靠前”,大于表示“在字母顺序上靠后”,但事实并非如此。对于字符串,第一个字符串中每个字符的代码都与会第二个字符串中对应位置的字符的代码进行数值比较。完成这种比较操作后,返回一个 Boolean 值。问题在于大写字母的代码都小于小写字母的代码,这意味这着可能会遇到下列情况:

var bResult = "Blue" < "alpha";
alert(bResult);	//输出 true

在上面的例子中,字符串 "Blue" 小于 "alpha",因为字母 B 的字符代码是 66,字母 a 的字符代码是 97。要强制性得到按照真正的字母顺序比较的结果,必须把两个数转换成相同的大小写形式(全大写或全小写的),然后再进行比较:

var bResult = "Blue".toLowerCase() < "alpha".toLowerCase();
alert(bResult);	//输出 false

把两个运算数都转换成小写,确保了正确识别出 "alpha" 在字母顺序上位于 "Blue" 之前。

比较数字和字符串

另一种棘手的状况发生在比较两个字符串形式的数字时,比如:

var bResult = "25" < "3";
alert(bResult);	//输出 "true"

上面这段代码比较的是字符串 "25" 和 "3"。两个运算数都是字符串,所以比较的是它们的字符代码("2" 的字符代码是 50,"3" 的字符代码是 51)。

不过,如果把某个运算数该为数字,那么结果就有趣了:

var bResult = "25" < 3;
alert(bResult);	//输出 "false"

这里,字符串 "25" 将被转换成数字 25,然后与数字 3 进行比较,结果不出所料。

无论何时比较一个数字和一个字符串,ECMAScript 都会把字符串转换成数字,然后按照数字顺序比较它们。

కానీ, కాల్కులేషన్ కొలబద్దం కాల్కులేషన్ కొలబద్దం కాకపోయినట్లయితే ఏం చేయాలి? ఈ ఉదాహరణను పరిగణించండి:

var bResult = "a" < 3;
alert(bResult);

ఈ కోడ్ చిహ్నాన్ని మీరు ఏ విధంగా ప్రతీక్షించగలరు? అక్షరం "a" సంఖ్యగా మార్చబడదు. కానీ, దానిని parseInt() మాదిరిగా కాల్కులేయబడితే, నాన్ ఆన్ అని తిరిగి పొందబడుతుంది. నిబంధనల ప్రకారం, నాన్ ఆన్ అనునది సంబంధించిన ఏ సంబంధించిన కాల్కులేషన్ కొలబద్దం సంకీర్ణంగా ఉండదు, కాబట్టి ఈ కోడ్ చిహ్నం కూడా సంకీర్ణంగా ఉండదు:

var bResult = "a" >= 3;
alert(bResult);

సాధారణంగా, కనీస కాల్కులేషన్ విలువలు సంకీర్ణంగా ఉంటే సంకీర్ణంగా ఉండబడదు, అయితే ఏ సంఖ్య నాన్ ఆన్ ఉంటే అలా కాదు.