"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > لا تخلط؟؟ مع || في JavaScript: وإليك أوجه الاختلاف!

لا تخلط؟؟ مع || في JavaScript: وإليك أوجه الاختلاف!

تم النشر بتاريخ 2024-11-14
تصفح:408

Don’t Confuse ?? with || in JavaScript: Here’s How They Differ!

؟؟ مقابل || في جافا سكريبت: الفرق غير المعروف

مقدمة

توفر JavaScript عدة طرق للتعامل مع القيم غير المحددة أو الخالية في التعليمات البرمجية. هناك عاملان شائعان يستخدمان لهذا الغرض هما عامل الدمج الفارغ (؟؟) وعامل التشغيل المنطقي OR (||). في حين أن هؤلاء المشغلين قد يبدون متشابهين للوهلة الأولى، إلا أن سلوكهم يمكن أن يختلف بشكل كبير في مواقف معينة. يعد فهم الاختلافات بين هذين العاملين أمرًا ضروريًا، خاصة للمبتدئين الذين يرغبون في كتابة تعليمات برمجية أكثر دقة وخالية من الأخطاء.

في هذا الدليل سنستكشف الفرق بين ؟؟ و || في JavaScript، مع تقسيمها خطوة بخطوة مع الأمثلة حتى تتمكن من الانتقال من الصفر إلى البطل في لمح البصر.

ما هو عامل الدمج الفارغ (؟؟)؟

مشغل الدمج الفارغ ؟؟ يُستخدم لتوفير قيمة احتياطية عند التعامل مع null أو غير محدد. فهو يتحقق فقط مما إذا كانت القيمة فارغة أو غير محددة، وإذا كانت كذلك، فإنها تُرجع القيمة الاحتياطية المقدمة.

بناء الجملة:

let result = value ?? fallbackValue;

في هذا التعبير، إذا كانت القيمة فارغة أو غير محددة، فسيتم إرجاع القيمة الاحتياطية.

المثال 1: استخدام عامل الدمج الفارغ (؟؟)

let name = null;
let defaultName = name ?? 'John Doe';

console.log(defaultName); // Output: 'John Doe'

في هذا المثال، الاسم فارغ، لذلك تم تعيين الاسم الافتراضي "John Doe" كبديل.

النقاط الرئيسية:

  • ؟؟ الشيكات فارغة أو غير محددة.
  • ترجع القيمة على اليسار إذا كانت ليست فارغة أو غير محددة، وإلا فإنها ترجع القيمة الاحتياطية على اليمين.

ما هو العامل المنطقي OR (||)؟

عامل التشغيل المنطقي OR || هو عامل آخر يستخدم للقيم الاحتياطية، ولكنه يعمل بشكل مختلف. يتحقق مما إذا كان الجانب الأيسر من التعبير هو قيمة خطأ. في جافا سكريبت، تتضمن القيم الخاطئة فارغة، وغير محددة، وخطأ، و0، وNaN، و'' (سلسلة فارغة).

بناء الجملة:

let result = value || fallbackValue;

إذا كانت القيمة خاطئة، فسيتم إرجاع القيمة الاحتياطية.

المثال 2: استخدام عامل التشغيل المنطقي (||)

let age = 0;
let defaultAge = age || 18;

console.log(defaultAge); // Output: 18

في هذه الحالة، العمر هو 0، وهي قيمة خاطئة، لذلك تم تعيين العمر الافتراضي على 18.

النقاط الرئيسية:

  • || يتحقق من وجود أي قيمة زائفة.
  • إذا كانت القيمة الموجودة على اليسار خاطئة، فسيتم إرجاع القيمة الاحتياطية على اليمين.

الفرق الرئيسي بين؟؟ و ||

للوهلة الأولى،؟؟ و || قد يبدو أنه يخدم نفس الغرض - وهو توفير قيم احتياطية - ولكن هناك تمييز مهم:

  • ال ؟؟ يتحقق عامل التشغيل فقط من وجود قيمة فارغة أو غير محددة.
  • ال|| يتحقق المشغل من وجود أي قيمة خاطئة.

يصبح هذا الاختلاف الدقيق حاسمًا عندما تتعامل مع قيم خاطئة ولكن صالحة مثل 0، ''، أو false.

مثال 3:؟؟ مقابل || بالقيم الكاذبة

let count = 0;
let defaultCount1 = count ?? 10; // Using nullish coalescing
let defaultCount2 = count || 10; // Using logical OR

console.log(defaultCount1); // Output: 0
console.log(defaultCount2); // Output: 10

العدد هنا هو 0، وهي قيمة صالحة ولكنها غير صحيحة في JavaScript.

  • باستخدام ؟؟، يحتفظ defaultCount1 بالصفر، لأن 0 ليس فارغًا أو غير محدد.
  • باستخدام ||، يصبح defaultCount2 10، لأن 0 قيمة خاطئة.

متى يجب أن تستخدم؟؟ أو ||؟

الاختيار بين؟؟ و || يعتمد على السلوك المحدد الذي تريده.

يستخدم ؟؟ متى:

  • أنت تريد التعامل مع قيم null أو غير المحددة على وجه التحديد، دون التأثير على القيم الخاطئة مثل 0 أو false أو ''.
  • تحتاج إلى الاحتفاظ بقيم خاطئة صالحة، مثل 0 (عدد صالح)، أو '' (سلسلة فارغة صالحة).

مثال:

let userInput = '';
let fallbackInput = userInput ?? 'default input';

console.log(fallbackInput); // Output: ''

في هذا المثال، السلسلة الفارغة '' هي إدخال مستخدم صالح، لذا ؟؟ يسمح لها بالمرور دون استبدالها بالاحتياطي.

استخدم || متى:

  • أنت تريد التعامل مع جميع القيم الخاطئة (مثل 0، وfalse، وNaN، و''، وغير محددة) على أنها تحتاج إلى قيم احتياطية.
  • لا بأس باستبدال قيم مثل 0 أو خطأ.

مثال:

let isLoggedIn = false;
let loginStatus = isLoggedIn || 'Not logged in';

console.log(loginStatus); // Output: 'Not logged in'

هنا، يتم التعامل مع خطأ على أنه خطأ، ويتم استخدام الخيار الاحتياطي "لم يتم تسجيل الدخول".

المزالق الشائعة وكيفية تجنبها

الآن بعد أن عرفت الفرق، دعنا نلقي نظرة على بعض الأخطاء الشائعة التي يرتكبها المبتدئون غالبًا وكيفية تجنبها.

الخطأ 1: استخدام || للقيم الزائفة الصالحة

let score = 0;
let displayedScore = score || 'No score';

console.log(displayedScore); // Output: 'No score'

المشكلة: أردت عرض 0 كنتيجة، ولكن || استبدلتها بـ "لا يوجد نتيجة" لأن 0 خطأ.

الحل: استخدم ؟؟ للسماح لـ 0 بالمرور.

let displayedScore = score ?? 'No score'; // Output: 0

الخطأ الثاني: سوء فهم الدمج الفارغ

let userPreference = null;
let defaultPreference = userPreference ?? false;

console.log(defaultPreference); // Output: false

شرح: تفضيل المستخدم فارغ، لذلك يتم استخدام الخطأ الاحتياطي. هذا هو السلوك الصحيح ل؟؟.

الأسئلة المتداولة

هل يمكنني استخدام؟؟ و || معاً؟

نعم، يمكنك استخدام كلا العاملين في أجزاء مختلفة من نفس التعبير إذا لزم الأمر.

مثال:

let result = (value ?? defaultValue) || fallbackValue;

يقوم هذا أولاً بالتحقق من وجود قيمة فارغة أو غير محددة باستخدام ؟؟ ثم يتحقق من وجود قيم خاطئة أخرى باستخدام ||.

هل Nullish Coalescing Operator مدعوم في جميع المتصفحات؟

ال ؟؟ المشغل مدعوم في المتصفحات الحديثة، ولكن بالنسبة للبيئات القديمة، قد تحتاج إلى استخدام مترجم مثل Babel.

ما هي حالة الاستخدام لكل مشغل؟

  • يستخدم ؟؟ عندما تهتم على وجه التحديد بالقيمة الفارغة أو غير المحددة.
  • استخدم || عندما تريد التعامل مع أي قيمة زائفة.

يفعل ؟؟ العمل مع القيم الزائفة الأخرى؟

لا، ؟؟ يتحقق فقط من القيم الخالية وغير المحددة، وليس من القيم الخاطئة الأخرى مثل false أو 0 أو ''.

خاتمة

فهم الفرق بين؟؟ و || في JavaScript أمر بالغ الأهمية لكتابة تعليمات برمجية قوية وخالية من الأخطاء. في حين أن كلا العاملين يساعدان في توفير القيم الاحتياطية، فإن سلوكهما يختلف عندما يتعلق الأمر بالتعامل مع القيم الزائفة. يستخدم ؟؟ عندما تحتاج إلى التحقق من وجود قيمة فارغة أو غير محددة، واستخدام || عندما تريد التحقق من وجود أي قيمة خاطئة.

من خلال إتقان عوامل التشغيل هذه، ستتمكن من كتابة تعليمات برمجية أكثر مرونة ودقة تعمل تمامًا كما هو مقصود.

بيان الافراج يتم استنساخ هذه المقالة على: https://dev.to/chintanonweb/dont-confuse-with-in-javascript-heres-how-hey-differ-4o7l؟1 إذا كان هناك أي انتهاك ، يرجى الاتصال بـ [email protected] لحذفه.
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3