ECMAScript సమానత్వ ఆపరేటర్లు

判断两个变量是否相等是程序设计中非常重要的运算。在处理原始值时,这种运算相当简单,但涉及对象,任务就稍有点复杂。

ECMAScript 提供了两套等性运算符:等号和非等号用于处理原始值,全等号和非全等号用于处理对象。

等号和非等号

在 ECMAScript 中,等号由双等号(==)表示,当且仅当两个运算数相等时,它返回 true。非等号由感叹号加等号(!=)表示,当且仅当两个运算数不相等时,它返回 true。为确定两个运算数是否相等,这两个运算符都会进行类型转换。

执行类型转换的规则如下:

  • 如果一个运算数是 Boolean 值,在检查相等性之前,把它转换成数字值。false 转换成 0,true 为 1。
  • 如果一个运算数是字符串,另一个是数字,在检查相等性之前,要尝试把字符串转换成数字。
  • 如果一个运算数是对象,另一个是字符串,在检查相等性之前,要尝试把对象转换成字符串。
  • 如果一个运算数是对象,另一个是数字,在检查相等性之前,要尝试把对象转换成数字。

在比较时,该运算符还遵守下列规则:

  • 值 null 和 undefined 相等。
  • 在检查相等性时,不能把 null 和 undefined 转换成其他值。
  • 如果某个运算数是 NaN,等号将返回 false,非等号将返回 true。
  • రెండు ఆపరేటర్లు పరికల్పనలు అయినప్పటికీ, వాటి పరికల్పనలను ప్రతిపాదించబడింది. రెండు పరికల్పనలు ఒకే పరికల్పనకు సంకేతిస్తే, సమానం అని తెలియజేస్తుంది లేకపోతే రెండు పరికల్పనలు సమానం కాదు.

ముఖ్య సూచన:రెండు సంఖ్యలు ఇక్కడా NaN అయినప్పటికీ, ఇక్కడా సమానం అని తెలియజేసే సమానాన్ని ఫలితంగా సమానం అని తెలియజేస్తుంది ఎందుకంటే, నియమాల ప్రకారం, NaN సమానం కాదు.

ఈ పట్టిక కొన్ని ప్రత్యేక పరిస్థితులను మరియు వాటి ఫలితాలను జాబితాభేదం చేస్తుంది:

అభివ్యక్తి విలువ
null == undefined true
"NaN" == NaN false
5 == NaN false
NaN == NaN false
NaN != NaN true
false == 0 true
true == 1 true
true == 2 false
undefined == 0 false
null == 0 false
"5" == 5 true

全等号和非全等号

等号和非等号的同类运算符是全等号和非全等号。这两个运算符所做的与等号和非等号相同,只是它们在检查相等性前,不执行类型转换。

సమాన సంకేతాన్ని మూడు సంకేతాలు తో ప్రదర్శించబడుతుంది (===), అలాగే రకంగా అనుమానాలు వాటిలో సమానంగా ఉన్నప్పుడు మాత్రమే true వచ్చేది.

ఉదాహరణకు:

var sNum = "66";
var iNum = 66;
alert(sNum == iNum);	//అవుట్పుట్ "true"
alert(sNum === iNum);	//అవుట్పుట్ "false"

ఈ కోడ్ రాకుమారిలో, మొదటి alert సమాన సంకేతాన్ని ఉపయోగించి స్ట్రింగ్ "66" ను సంఖ్య 66 తో పోల్చబడుతుంది, "true" ఉంటుంది. అంతకు ముందు, స్ట్రింగ్ "66" సంఖ్య 66 గా మారుస్తుంది. రెండవ alert సమాన సంకేతాన్ని సంకేతాలు ఉపయోగించి సంకేతాలు లేకుండా పోల్చబడతాయి, కాబట్టి స్ట్రింగ్ మరియు సంఖ్య అసమానంగా ఉన్నాయి, కాబట్టి "false" ఉంటుంది.

అసమాన సంకేతాన్ని స్క్వేర్ బ్లాకులు తో (!==) ప్రదర్శించబడుతుంది, అలాగే రకంగా అనుమానాలు వాటిలో సమానంగా ఉన్నప్పుడు మాత్రమే true వచ్చేది.

ఉదాహరణకు:

var sNum = "66";
var iNum = 66;
alert(sNum != iNum);	//అవుట్పుట్ "false"
alert(sNum !== iNum);	//అవుట్పుట్ "true"

ఇక్కడ, మొదటి alert అసమాన సంకేతాన్ని ఉపయోగించి స్ట్రింగ్ "66" ను సంఖ్య 66 గా మారుస్తుంది, దానిని రెండవ ఆపరేటర్ 66 తో సమానంగా చేస్తుంది. అందువలన, గణన ఫలితం "false" గా ఉంటుంది, ఎందుకంటే రెండు ఆపరేటర్లు సమానంగా ఉన్నాయి. రెండవ alert అసమాన సంకేతాన్ని ఉపయోగిస్తుంది. ఈ క్రియ దానికి అనుభావించబడుతుంది: "sNum" మరియు "iNum" భిన్నంగా ఉన్నాయి అని. ఈ ప్రశ్న అంశం సమాధానం: అవును (true), ఎందుకంటే sNum స్ట్రింగ్, మరియు iNum సంఖ్య అని, వారు సరిగ్గా భిన్నంగా ఉన్నాయి.