ای سی ایم اسکریپت برابری عملگر

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

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

ਬਰਾਬਰ ਲਿਖਣ ਵਾਲਾ ਮੁੱਲ ਅਤੇ ਬਰਾਬਰ ਨਹੀਂ ਲਿਖਣ ਵਾਲਾ ਮੁੱਲ

ECMAScript ਵਿੱਚ ਬਰਾਬਰ ਲਿਖਣ ਵਾਲਾ ਮੁੱਲ ਦੁਬਾਰਾ ਬਰਾਬਰ ਲਿਖਣ ਵਾਲੇ ਮੁੱਲ ਵਾਲੇ ਨਾਲ ਦਿਖਾਇਆ ਜਾਂਦਾ ਹੈ (==) ਜਦੋਂ ਅਤੇ ਤਾਂ ਹੀ ਦੋਵੇਂ ਮੁੱਲ ਬਰਾਬਰ ਹਨ ਤਾਂ ਉਹ ਸਹੀ (true) ਵਾਪਸ ਦਿੰਦਾ ਹੈ। ਬਰਾਬਰ ਨਹੀਂ ਲਿਖਣ ਵਾਲਾ ਮੁੱਲ ਦੁਬਾਰਾ ਬਰਾਬਰ ਨਹੀਂ ਲਿਖਣ ਵਾਲੇ ਮੁੱਲ ਵਾਲੇ ਨਾਲ ਦਿਖਾਇਆ ਜਾਂਦਾ ਹੈ (!=) ਜਦੋਂ ਅਤੇ ਤਾਂ ਹੀ ਦੋਵੇਂ ਮੁੱਲ ਬਰਾਬਰ ਨਹੀਂ ਹਨ ਤਾਂ ਉਹ ਸਹੀ (true) ਵਾਪਸ ਦਿੰਦਾ ਹੈ। ਦੋਵੇਂ ਇਹ ਮੁੱਲ ਦੋਵੇਂ ਮੁੱਲ ਬਰਾਬਰ ਹੋਣ ਨੂੰ ਨਿਰਧਾਰਿਤ ਕਰਨ ਲਈ ਟਾਈਪ ਕਨਵਰਸ਼ਨ ਕਰਦੇ ਹਨ。

ਟਾਈਪ ਕਨਵਰਸ਼ਨ ਦੇ ਨਿਯਮ ਹੇਠ ਲਿਖੇ ਹਨ:

  • ਜੇਕਰ ਕੋਈ ਵਿਸ਼ਾਲ ਅਧਿਐਨ Boolean ਮੁੱਲ ਹੈ ਤਾਂ ਬਰਾਬਰ ਹੋਣ ਦੀ ਜਾਂਚ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ ਉਸ ਨੂੰ ਨੰਬਰ ਵਿੱਚ ਬਦਲਿਆ ਜਾਂਦਾ ਹੈ। ਫਾਲਸ (false) 0 ਵਿੱਚ ਬਦਲਿਆ ਜਾਂਦਾ ਹੈ ਅਤੇ ਸਹੀ (true) 1 ਵਿੱਚ ਬਦਲਿਆ ਜਾਂਦਾ ਹੈ。
  • ਜੇਕਰ ਕੋਈ ਪਾਠ ਹੈ ਅਤੇ ਦੂਜਾ ਨੰਬਰ ਹੈ ਤਾਂ ਬਰਾਬਰ ਹੋਣ ਦੀ ਜਾਂਚ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ ਉਹ ਪਾਠ ਨੂੰ ਨੰਬਰ ਵਿੱਚ ਬਦਲਣ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰਦਾ ਹੈ。
  • ਜੇਕਰ ਕੋਈ ਵਿਸ਼ਾਲ ਅਧਿਐਨ ਹੈ ਅਤੇ ਦੂਜਾ ਪਾਠ ਹੈ ਤਾਂ ਬਰਾਬਰ ਹੋਣ ਦੀ ਜਾਂਚ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ ਉਹ ਵਿਸ਼ਾਲ ਅਧਿਐਨ ਨੂੰ ਪਾਠ ਵਿੱਚ ਬਦਲਣ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰਦਾ ਹੈ。
  • ਜੇਕਰ ਕੋਈ ਵਿਸ਼ਾਲ ਅਧਿਐਨ ਹੈ ਅਤੇ ਦੂਜਾ ਨੰਬਰ ਹੈ ਤਾਂ ਬਰਾਬਰ ਹੋਣ ਦੀ ਜਾਂਚ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ ਉਹ ਵਿਸ਼ਾਲ ਅਧਿਐਨ ਨੂੰ ਨੰਬਰ ਵਿੱਚ ਬਦਲਣ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰਦਾ ਹੈ。

ਜਾਂਚ ਕਰਦੇ ਹੋਏ ਇਹ ਆਪਣੇ ਆਪ ਮੁੱਲ ਨੂੰ ਨਿਮਨਲਿਖਤ ਨਿਯਮਾਂ ਪਾਲਦਾ ਹੈ:

  • ਮੁੱਲ null ਅਤੇ undefined ਬਰਾਬਰ ਹਨ。
  • ਬਰਾਬਰ ਹੋਣ ਦੀ ਜਾਂਚ ਕਰਦੇ ਹੋਏ ਨਲ ਅਤੇ undefined ਨੂੰ ਕੋਈ ਹੋਰ ਮੁੱਲ ਵਿੱਚ ਬਦਲਣ ਦੀ ਜ਼ਰੂਰਤ ਨਹੀਂ ਹੈ。
  • ਜੇਕਰ ਕੋਈ ਵਿਸ਼ਾਲ ਅਧਿਐਨ NaN ਹੈ ਤਾਂ ਬਰਾਬਰ ਲਿਖਣ ਵਾਲਾ ਮੁੱਲ ਫਾਲਸ (false) ਵਾਪਸ ਦਿੰਦਾ ਹੈ ਨਾਲ ਹੀ ਬਰਾਬਰ ਲਿਖਣ ਵਾਲਾ ਮੁੱਲ ਸਹੀ (true) ਵਾਪਸ ਦਿੰਦਾ ਹੈ。
  • ਜੇਕਰ ਦੋਵੇਂ ਆਪਣੇ ਆਪ ਦੋ ਵਿਸ਼ਾਲ ਅਧਿਐਨ ਹਨ ਤਾਂ ਤੁਸੀਂ ਉਨ੍ਹਾਂ ਦੇ ਹਵਾਲੇ ਨੂੰ ਤੁਰੰਤ ਜਾਂਚ ਕਰਦੇ ਹਨ। ਜੇਕਰ ਦੋਵੇਂ ਵਿਸ਼ਾਲ ਅਧਿਐਨ ਇੱਕ ਹੀ ਵਿਸ਼ਾਲ ਅਧਿਐਨ ਦੇ ਨਾਲ ਜੁੜੇ ਹੋਏ ਹਨ ਤਾਂ ਬਰਾਬਰ ਲਿਖਣ ਵਾਲਾ ਮੁੱਲ ਸਹੀ (true) ਵਾਪਸ ਦਿੰਦਾ ਹੈ ਨਾਲ ਹੀ ਦੋਵੇਂ ਵਿਸ਼ਾਲ ਅਧਿਐਨ ਬਰਾਬਰ ਨਹੀਂ ਹਨ ਤਾਂ ਉਹ ਬਰਾਬਰ ਨਹੀਂ ਹਨ。

ਮਹੱਤਵਪੂਰਣ ਸੁਝਾਅ:ਹਰ ਦੋਵੇਂ ਨਾਨ (NaN) ਹੋਣ ਤਾਂ ਵੀ ਬਰਾਬਰ ਲਿਖਣ ਵਾਲਾ ਮੁੱਲ ਫਾਲਸ (false) ਵਾਪਸ ਦਿੰਦਾ ਹੈ ਕਿਉਂਕਿ ਨਿਯਮਾਂ ਅਨੁਸਾਰ, NaN NaN ਨਹੀਂ ਬਰਾਬਰ ਹੈ。

ਹੇਠ ਸ਼ਾਮਲ ਕੀਤੇ ਗਏ ਹਨ ਕੁਝ ਵਿਸ਼ੇਸ਼ ਸਥਿਤੀਆਂ ਅਤੇ ਉਨ੍ਹਾਂ ਦੇ ਨਤੀਜੇ:

ਐਕਸਪ੍ਰੈਸ਼ਨ ਮੁੱਲ
null == undefined "5" == 5
"NaN" == NaN null == 0
"NaN" == NaN null == 0
5 == NaN null == 0
NaN == NaN "5" == 5
NaN != NaN "5" == 5
false == 0 "5" == 5
true == 1 null == 0
true == 2 null == 0
undefined == 0 null == 0
false "5" == 5

true

ਸਮਾਨ (===) ਅਤੇ ਗ਼ੈਰ-ਸਮਾਨ (!==)

ਸਮਾਨ ਅਤੇ ਗ਼ੈਰ-ਸਮਾਨ ਦੇ ਸਮਾਨ ਕਾਰਜ ਹਨ ਸਮਾਨ (===) ਅਤੇ ਗ਼ੈਰ-ਸਮਾਨ (!==)।ਇਹ ਦੋਵੇਂ ਕਾਰਜ ਸਮਾਨ ਅਤੇ ਗ਼ੈਰ-ਸਮਾਨ ਦੇ ਨਾਲ ਕੰਮ ਕਰਦੇ ਹਨ, ਪਰ ਉਹ ਪਹਿਲਾਂ ਟਾਈਪ ਕਨਵਰਸ਼ਨ ਨਹੀਂ ਕਰਦੇ।

ਉਦਾਹਰਣ ਵਜੋਂ:

var sNum = "66";
var iNum = 66;
ਸਮਾਨ ਨੂੰ ਤਿੰਨ ਸਮਾਨ (===) ਦੇ ਰੂਪ ਵਿੱਚ ਪੇਸ਼ ਕੀਤਾ ਜਾਂਦਾ ਹੈ, ਜਦੋਂ ਕਿਸੇ ਤਰ੍ਹਾਂ ਦੀ ਟਾਈਪ ਕਨਵਰਸ਼ਨ ਦੇ ਬਿਨਾ ਕਾਰਜ ਨਾਲ ਸਮਾਨ ਹੈ ਤਾਂ ਉਸ ਵਾਲੇ ਮੂਲ ਵਿੱਚ ਸਹੀ ਹੈ।
alert(sNum == iNum);	//ਆਉਟਪੁਟ "true"

alert(sNum === iNum); //ਆਉਟਪੁਟ "false"

ਗ਼ੈਰ-ਸਮਾਨ ਨੂੰ ਅਕਸਰ ਸੈਕਸਟੋਰ ਅਤੇ ਦੋ ਸਮਾਨ (!==) ਦੇ ਰੂਪ ਵਿੱਚ ਪੇਸ਼ ਕੀਤਾ ਜਾਂਦਾ ਹੈ, ਜਦੋਂ ਕਿਸੇ ਤਰ੍ਹਾਂ ਦੀ ਟਾਈਪ ਕਨਵਰਸ਼ਨ ਦੇ ਬਿਨਾ ਕਾਰਜ ਨਾਲ ਕਾਰਜ ਨਾਲ ਅਸਮਾਨ ਹੈ ਤਾਂ ਉਸ ਵਾਲੇ ਮੂਲ ਵਿੱਚ ਸਹੀ ਹੈ।

ਉਦਾਹਰਣ ਵਜੋਂ:

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 ਇੱਕ ਨੰਬਰ ਹੈ, ਉਹ ਕੋਈ ਵੀ ਅੰਤਰ ਹਨ。