Pages

شنو الفرق ما بين == و === في جافا سكريبت؟




في Javascript كاين == و === للوهلة الأولى كايبانو متشابهين شوية ولكن في الحقيقة راهم مختلفين بزاف.

1. Triple Equals ===
لي خاصك تعرف هو أنه ملي كاتستعمل === كاتكون كاتقارن جوج ديال الحوايج :
  • La valeur
  • Le type
وهاد المقارنة كاتسمى strict equality.

في المثال التالي كانقارنو رقم 3 مع نفسو (رقم 3 عاوتاني)، كانديرو test علىstrict equality و كيفما هو منتظر غادي ترجع لينا true، حيت بجوج عندهم نفس type لي هو number و عندهم نفس valeur لي هيا 3.



أجيو نشوفو أمثلة كاترجع true حتا هيا :



في المثال التالي، كانقارنو 20 (number) مع '20' (string)، بصح عندهم نفس la valeur، ولكن type مختلف داكشي علاش كيرجع لينا false :

دابا أجيو نعطيو أمثلة أخرى كايرجعو false :

بانت ليك الفكرة؟ لمهم === أو ما يسمى بtriple (strict) equality لهدف ديالو هو نقارنو valeur و type.
Double equals .2 ==

ملي كانستعملو == كانديرو مايسمى بloose equality حيت كانقارنو غير la valeur و ماكنتسوقوش ل type، و هاد double equals كادير واحد لقاضية كاتسمى type coercion، ماشي مشكل إلا معرفتيش لمعنى ديالها، غانشرحو في المثال جاي.


عقلتي لفوق ف triple equals ملي قارنا 20 ب '20' و عطاتنا false حيت واخا عندهم نفس valeur راه type مختلف، فهاد المثال دابا غاتعطينا true حيت كانقارنو غير la valeur، ولكن قبل ماترجع true كاتوقع ديك لقاضية لي قلت ليكوم type coercion، جافا سكريبت غايحول دوك جوج ديال valeurs لنفس type، في لحالة ديالنا غايحول '20' لي هي string ل 20 لي هي number (يعني من فوق لمقارنة كانديرو حاجة أخرى لي هي نحولو les types، هنا فين كاتبان === حسن من == حيت ملي كانستعملو === كانديرو غاحاجة وحدة و لي هي المقارنة صافي).

عقلتو لفوق عاوتاني ملي درنا مقارنة بين صفر 0 و false و عطاتنا false، في المثال جاي غانقارنوهوم ب == و غاتعطينا true. 

هادشي كايتفسر بما يسمى Falsy values، في  جافا سكريبت كاين 6 ديال Falsy values و لي هما:

  • false
  • Le nombre zéro) 0)
  • (Chaîne vide) “”
  • null
  • undefined
  • (NaN (Not a number 
3. قواعد المقارنة بين Falsy values
هاد ثلاثة ديال القواعد لي غاتشوفو دابا تقدرو تعتابروها للحفظ خصوصا إلا كنتو كاتخدمو بجافا سكريبت بشكل شبه يومي.

1. 0، false و ""
إلا قارنتو أي وحدة من هاد ثلاثة 0، false و"" بloose equality  يعني ب == غاتعطيكم true حيت غادي دار ديك لقاضية ديال type coercion و تحول les valeurs ل false ، كاتولي كاتقارن false ب false :


2. null و undefined
ملي كانقارنو undefined و null دير فبالك بلي راهم متساويين غير مع بعضياتهم صافي :


إلا جربتو تقارنو undefined ولا null بأي valeur أخرى غاتعطيكم false.

3. NaN
NaN ما كاتساوي حتى حاجة، إلا بغيتو يزيد يهرب ليكوم: ماكاتساويش حتى راسها


4. خلاصة
  • كيفما شفتو، Type coercion إلا مكنتيش مولف بجافا سكريبت، غادي تحماقك شوية فالاول، أنك تحفظ و تفهم دوك Falsy values غايعاونك فأنك تفهم loose equality ==
  •   Triple Equal مجهدة على double equals، حاول قدر المستطاع تخدم بيها، ملي كادير test على la valeur و le type كاتكون متأكد أنك كاتقارن شي حاجة صحيحة.
  • إلا فهمتي == و ===، مغاديش توحل ف =! و ==! نخليك تكتاشفهوم راسك. 

houdass

Développeur depuis quelques années, j'ai une connaissance approfondie de nombreux langages et frameworks. Curieux de comprendre le "comment ça fonctionne" plutôt que de simplement "utiliser", c'est avec cet état d'esprit que j'évolue depuis plusieurs années et que j'élargie mes horizons.

Related Posts:

1 commentaire: