في تطوير الويب باستخدام JavaScript، نواجه كثيرًا الحاجة إلى التحقق مما إذا كانت قيمة معينة موجودة أو غير موجودة قبل استخدامها، خاصة عند التعامل مع القيم المحتملة مثل المدخلات أو البيانات من مصادر خارجية. ولحل هذه المشكلة بفعالية، يوفر JavaScript المشغل ??، والمعروف أيضًا باسم nullish coalescing operator.

في هذه المقالة، سنتعرف على كيفية عمل هذا المشغل وفوائده مقارنة بطرق التحقق التقليدية.

ما هو المشغل ??؟

المشغل ?? يُستخدم لتحديد قيمة بديلة في حالة أن القيمة الأصلية هي null أو undefined. بمعنى آخر، إذا كانت القيمة الأولى (التي نتحقق منها) تحتوي على قيمة فعلية، سيتم استخدامها. أما إذا كانت null أو undefined، فسيتم استخدام القيمة الثانية (البديلة).

كيفية الاستخدام:

let userName = null;
let defaultName = „Guest“;

let nameToDisplay = userName ?? defaultName;

console.log(nameToDisplay); // النتيجة: „Guest“

في المثال السابق:

• المتغير userName يحتوي على القيمة null. • المشغل ?? يتحقق مما إذا كانت قيمة userName موجودة أم لا. بما أن userName هو null، يتم اختيار القيمة البديلة وهي "Guest".

الفرق بين ?? و || (OR)

غالبًا ما يُستخدم المشغل || (OR) بشكل مشابه لاختيار قيمة بديلة، ولكن هناك فرق مهم بين ?? و || في التعامل مع القيم “المزيفة” (Falsy Values).

المشغل || يقوم بإرجاع القيمة البديلة إذا كانت القيمة الأولى واحدة من القيم “المزيفة” التالية:• false • 0

‎ • „“ (سلسلة فارغة)
• null
• undefined

على سبيل المثال:

let userName = „“;
let defaultName = „Guest“;

let nameToDisplay = userName || defaultName;

console.log(nameToDisplay); // النتيجة: „Guest“

في هذا المثال، على الرغم من أن userName تحتوي على سلسلة فارغة „“، إلا أن المشغل || يعتبرها قيمة “مزيفة”، ولذلك يقوم بإرجاع القيمة البديلة „Guest“.

لكن في حالة استخدام ??، فإنه يتحقق فقط من ما إذا كانت القيمة null أو undefined ولا يعتبر القيم الأخرى “مزيفة”. وبالتالي، سيعيد القيمة الأصلية إذا لم تكن null أو undefined، حتى لو كانت 0 أو سلسلة فارغة.

لنلقِ نظرة على مثال باستخدام ??:

let userName = „“;
let defaultName = „Guest“;

let nameToDisplay = userName ?? defaultName;

console.log(nameToDisplay); // النتيجة: „“

في هذا المثال:• المتغير userName يحتوي على سلسلة فارغة "". • بما أن "" ليست null أو undefined، فإن المشغل ?? يعيد القيمة الأصلية وهي السلسلة الفارغة.

متى تستخدم ??؟

استخدام ?? يكون مفيدًا جدًا في الحالات التي ترغب فيها بإعطاء قيمة بديلة فقط في حالة أن القيمة الأصلية غير معرّفة (undefined) أو خالية (null). أما إذا كنت ترغب في التعامل مع القيم “المزيفة” الأخرى مثل false أو 0 أو سلسلة فارغة، فربما يكون استخدام || هو الخيار الأنسب.

خاتمة

المشغل ?? في JavaScript يضيف مرونة أكبر عند التعامل مع القيم التي قد تكون غير معرّفة أو خالية، مما يساعد في كتابة كود أكثر وضوحًا وكفاءة. باستخدام هذا المشغل، يمكنك ضمان أن القيم الافتراضية ستُستخدم فقط في الظروف المناسبة، مما يقلل من الأخطاء التي قد تنجم عن التحقق غير الدقيق باستخدام المشغلات الأخرى مثل ||.

إذا كنت تبحث عن طريقة مخصصة للتعامل مع القيم غير الموجودة (null أو undefined) فقط، فإن ?? هو الحل المثالي لك.

أتمنى أن يكون هذا المقال قد ساعدك في فهم كيفية استخدام المشغل ?? في JavaScript. لا تتردد في مشاركتي استفساراتك أو أفكارك عبر التعليقات في مدونتي!