توفر JavaScript عدة طرق للتعامل مع القيم غير المحددة أو الخالية في التعليمات البرمجية. هناك عاملان شائعان يستخدمان لهذا الغرض هما عامل الدمج الفارغ (؟؟) وعامل التشغيل المنطقي OR (||). في حين أن هؤلاء المشغلين قد يبدون متشابهين للوهلة الأولى، إلا أن سلوكهم يمكن أن يختلف بشكل كبير في مواقف معينة. يعد فهم الاختلافات بين هذين العاملين أمرًا ضروريًا، خاصة للمبتدئين الذين يرغبون في كتابة تعليمات برمجية أكثر دقة وخالية من الأخطاء.
في هذا الدليل سنستكشف الفرق بين ؟؟ و || في JavaScript، مع تقسيمها خطوة بخطوة مع الأمثلة حتى تتمكن من الانتقال من الصفر إلى البطل في لمح البصر.
مشغل الدمج الفارغ ؟؟ يُستخدم لتوفير قيمة احتياطية عند التعامل مع null أو غير محدد. فهو يتحقق فقط مما إذا كانت القيمة فارغة أو غير محددة، وإذا كانت كذلك، فإنها تُرجع القيمة الاحتياطية المقدمة.
بناء الجملة:
let result = value ?? fallbackValue;
في هذا التعبير، إذا كانت القيمة فارغة أو غير محددة، فسيتم إرجاع القيمة الاحتياطية.
let name = null; let defaultName = name ?? 'John Doe'; console.log(defaultName); // Output: 'John Doe'
في هذا المثال، الاسم فارغ، لذلك تم تعيين الاسم الافتراضي "John Doe" كبديل.
عامل التشغيل المنطقي OR || هو عامل آخر يستخدم للقيم الاحتياطية، ولكنه يعمل بشكل مختلف. يتحقق مما إذا كان الجانب الأيسر من التعبير هو قيمة خطأ. في جافا سكريبت، تتضمن القيم الخاطئة فارغة، وغير محددة، وخطأ، و0، وNaN، و'' (سلسلة فارغة).
بناء الجملة:
let result = value || fallbackValue;
إذا كانت القيمة خاطئة، فسيتم إرجاع القيمة الاحتياطية.
let age = 0; let defaultAge = age || 18; console.log(defaultAge); // Output: 18
في هذه الحالة، العمر هو 0، وهي قيمة خاطئة، لذلك تم تعيين العمر الافتراضي على 18.
للوهلة الأولى،؟؟ و || قد يبدو أنه يخدم نفس الغرض - وهو توفير قيم احتياطية - ولكن هناك تمييز مهم:
يصبح هذا الاختلاف الدقيق حاسمًا عندما تتعامل مع قيم خاطئة ولكن صالحة مثل 0، ''، أو false.
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.
الاختيار بين؟؟ و || يعتمد على السلوك المحدد الذي تريده.
مثال:
let userInput = ''; let fallbackInput = userInput ?? 'default input'; console.log(fallbackInput); // Output: ''
في هذا المثال، السلسلة الفارغة '' هي إدخال مستخدم صالح، لذا ؟؟ يسمح لها بالمرور دون استبدالها بالاحتياطي.
مثال:
let isLoggedIn = false; let loginStatus = isLoggedIn || 'Not logged in'; console.log(loginStatus); // Output: 'Not logged in'
هنا، يتم التعامل مع خطأ على أنه خطأ، ويتم استخدام الخيار الاحتياطي "لم يتم تسجيل الدخول".
الآن بعد أن عرفت الفرق، دعنا نلقي نظرة على بعض الأخطاء الشائعة التي يرتكبها المبتدئون غالبًا وكيفية تجنبها.
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;
يقوم هذا أولاً بالتحقق من وجود قيمة فارغة أو غير محددة باستخدام ؟؟ ثم يتحقق من وجود قيم خاطئة أخرى باستخدام ||.
ال ؟؟ المشغل مدعوم في المتصفحات الحديثة، ولكن بالنسبة للبيئات القديمة، قد تحتاج إلى استخدام مترجم مثل Babel.
لا، ؟؟ يتحقق فقط من القيم الخالية وغير المحددة، وليس من القيم الخاطئة الأخرى مثل false أو 0 أو ''.
فهم الفرق بين؟؟ و || في JavaScript أمر بالغ الأهمية لكتابة تعليمات برمجية قوية وخالية من الأخطاء. في حين أن كلا العاملين يساعدان في توفير القيم الاحتياطية، فإن سلوكهما يختلف عندما يتعلق الأمر بالتعامل مع القيم الزائفة. يستخدم ؟؟ عندما تحتاج إلى التحقق من وجود قيمة فارغة أو غير محددة، واستخدام || عندما تريد التحقق من وجود أي قيمة خاطئة.
من خلال إتقان عوامل التشغيل هذه، ستتمكن من كتابة تعليمات برمجية أكثر مرونة ودقة تعمل تمامًا كما هو مقصود.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3