في Javascript كاين == و === للوهلة الأولى كايبانو متشابهين شوية ولكن في الحقيقة راهم مختلفين بزاف.
1. Triple Equals ===
1. Triple Equals ===
لي خاصك تعرف هو أنه ملي كاتستعمل === كاتكون كاتقارن جوج ديال الحوايج :
- La valeur
- Le type
وهاد المقارنة كاتسمى strict equality.
في المثال التالي كانقارنو رقم 3 مع نفسو (رقم 3 عاوتاني)، كانديرو test علىstrict equality و كيفما هو منتظر غادي ترجع لينا true، حيت بجوج عندهم نفس type لي هو number و عندهم نفس valeur لي هيا 3.
في المثال التالي كانقارنو رقم 3 مع نفسو (رقم 3 عاوتاني)، كانديرو test علىstrict equality و كيفما هو منتظر غادي ترجع لينا true، حيت بجوج عندهم نفس type لي هو number و عندهم نفس valeur لي هيا 3.
أجيو نشوفو أمثلة كاترجع true حتا هيا :
في المثال التالي، كانقارنو 20 (number) مع '20' (string)، بصح عندهم نفس la valeur، ولكن type مختلف داكشي علاش كيرجع لينا false :
دابا أجيو نعطيو أمثلة أخرى كايرجعو false :
دابا أجيو نعطيو أمثلة أخرى كايرجعو false :
بانت ليك الفكرة؟ لمهم === أو ما يسمى بtriple (strict) equality لهدف ديالو هو نقارنو valeur و type.
Double equals .2 ==
ملي كانستعملو == كانديرو مايسمى بloose equality حيت كانقارنو غير la valeur و ماكنتسوقوش ل type، و هاد double equals كادير واحد لقاضية كاتسمى type coercion، ماشي مشكل إلا معرفتيش لمعنى ديالها، غانشرحو في المثال جاي.
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.
عقلتو لفوق عاوتاني ملي درنا مقارنة بين صفر 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 كاتكون متأكد أنك كاتقارن شي حاجة صحيحة.
- إلا فهمتي == و ===، مغاديش توحل ف =! و ==! نخليك تكتاشفهوم راسك.
شكرا عل الشرح المبسط ،الله يعطيك الصحة
RépondreSupprimer