ای سی ایم اس تعلقاتی عملگر
- ਪਿਛਲਾ ਪੰਨਾ ਜੋਡ਼ਾ ਆਪਰੇਟਰ
- ਅਗਲਾ ਪੰਨਾ ਇਕੁਆਲਟੀ ਆਪਰੇਟਰ
关系运算符执行的是比较运算。每个关系运算符都返回一个布尔值。
常规比较方式
关系运算符小于、大于、小于等于和大于等于执行的是两个数的比较运算,比较方式与算术比较运算相同。
每个关系运算符都返回一个布尔值:
var bResult1 = 2 > 1 //true var bResult2 = 2 < 1 //false
不过,对两个字符串应用关系运算符,它们的行为则不同。许多人认为小于表示“在字母顺序上靠前”,大于表示“在字母顺序上靠后”,但事实并非如此。对于字符串,第一个字符串中每个字符的代码都与会第二个字符串中对应位置的字符的代码进行数值比较。完成这种比较操作后,返回一个 Boolean 值。问题在于大写字母的代码都小于小写字母的代码,这意味这着可能会遇到下列情况:
var bResult = "Blue" < "alpha"; alert(bResult); //آؤٹ پت
در مثال بالا، کوئیب "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() ਮੈਥਡ ਨਾਲ ਆਉਣ ਵਾਲਾ ਹੈ, ਤਾਂ ਇਹ NaN ਵਾਪਸ ਦਿੱਤਾ ਜਾਂਦਾ ਹੈ। ਇਨ੍ਹਾਂ ਨਿਯਮਾਂ ਦੇ ਅਨੁਸਾਰ, ਜਿਸ ਵਿੱਚ NaN ਸ਼ਾਮਿਲ ਹੋਵੇ ਉਸ ਦਾ ਸਬੰਧਤ ਸਬੰਧਤ ਆਪਰੇਟਰ ਫੇਲਸ ਵਾਪਸ ਦਿੱਤਾ ਜਾਂਦਾ ਹੈ, ਇਸ ਲਈ ਇਹ ਕੋਡ ਵੀ false ਵਾਪਸ ਦਿੰਦਾ ਹੈ:
var bResult = "a" >= 3; alert(bResult);
ਆਮ ਤੌਰ 'ਤੇ, ਜੇਕਰ ਕਮ ਆਪਰੇਟਰ ਦੋ ਮੁੱਲਾਂ ਦੇ ਮੁੱਲ ਨੂੰ ਫੇਲਵਾਉਂਦੇ ਹਨ ਤਾਂ false ਵਾਪਸ ਦਿੱਤਾ ਜਾਂਦਾ ਹੈ, ਪਰ ਜੇਕਰ ਕੋਈ ਸੰਖਿਆ NaN ਹੈ ਤਾਂ ਇਹ ਕਿਸੇ ਪ੍ਰਕਾਰ ਨਾਲ ਨਹੀਂ ਹੁੰਦਾ ਹੈ。
- ਪਿਛਲਾ ਪੰਨਾ ਜੋਡ਼ਾ ਆਪਰੇਟਰ
- ਅਗਲਾ ਪੰਨਾ ਇਕੁਆਲਟੀ ਆਪਰੇਟਰ