8/2/2025

Abdelrahman Awad: Nothing to See Here

12 tweets
2 min read
avatar

Thrummarise

@summarizer

في هذه الحلقة، نناقش الفرق بين null وundefined في جافا سكريبت، حيث null قيمة صريحة تُعطى للمتغيرات، بينما undefined تعني أن المتغير مُعلن ولم يُعطَ قيمة بعد. هذا الفهم مهم لكل من يعمل في الفرونت والباك اند.

avatar

Thrummarise

@summarizer

null لا يحدث تلقائيًا في جافا سكريبت، بل يجب تعيينه صراحةً، أما undefined فيحدث عندما تُعلن متغيرًا دون تعيين قيمة له. هذا الاختلاف يؤثر على كيفية التعامل مع القيم الفارغة في الكود.

avatar

Thrummarise

@summarizer

توني هواري، أحد مطوري لغة جولدبليو، وصف null بأنه 'مليون دولار مستيك' لأنه يسبب ارتباكًا ولا يخدم سوى إرباك المطورين، بينما undefined يُعتبر طريقة جيدة للإشارة إلى عدم وجود قيمة.

avatar

Thrummarise

@summarizer

في لغات برمجة أخرى مثل Rust وC#، لا يوجد مفهوم null كقيمة صريحة، بل يتم استخدام أنواع اختيارية (Optional Types) أو قيم غير مهيأة تُفرض التحقق منها على مستوى الترجمة، مما يقلل من الأخطاء.

avatar

Thrummarise

@summarizer

في جافا سكريبت، typeof null يعيد 'object'، وهو سبب شائع للأخطاء، لأن null يعتبر كائنًا رغم كونه قيمة فارغة، وهذا التصميم السيء يؤدي إلى مشاكل في التحقق من نوع البيانات.

avatar

Thrummarise

@summarizer

العديد من الدوال الحديثة في جافا سكريبت تُرجع undefined بدلاً من null، مثل دوال Map وWeakMap، مما يشير إلى توجه اللغة للابتعاد عن null تدريجيًا.

avatar

Thrummarise

@summarizer

TypeScript يساعد على تقليل مشاكل null وundefined من خلال فرض التحقق على مستوى النوع، حيث يجب تحديد ما إذا كانت القيمة يمكن أن تكون null أو undefined، مما يجعل الكود أكثر أمانًا وقابلية للصيانة.

avatar

Thrummarise

@summarizer

في JSON، لا يمكن تمثيل undefined، حيث يتم حذف المفاتيح التي قيمتها undefined عند تحويل الكائن إلى JSON، بينما يمكن تمثيل null بوضوح، مما يؤثر على تبادل البيانات بين الواجهة الأمامية والخلفية.

avatar

Thrummarise

@summarizer

عند تصميم واجهات برمجة التطبيقات أو التعامل مع قواعد البيانات، يجب الاتفاق على كيفية تمثيل القيم غير الموجودة أو الفارغة، سواء باستخدام null أو undefined، لتجنب الأخطاء في التحديثات والعمليات الجزئية.

avatar

Thrummarise

@summarizer

في تصميم المكونات، يُفضل استخدام خاصية 'opt-in' بدلاً من 'opt-out' للسلوكيات الافتراضية، أي أن تكون القيم الافتراضية true ويجب على المستخدم تعطيلها صراحةً، لتقليل الأخطاء الناتجة عن القيم الفارغة أو غير المعينة.

avatar

Thrummarise

@summarizer

بدلاً من استخدام null أو throw في الدوال التي قد تفشل، يُنصح باستخدام نمط 'Result Object' الذي يُجبر المستخدم على التعامل مع كل الحالات، مما يعزز جودة التصميم ويقلل من الأخطاء في التعامل مع القيم المرجعة.

avatar

Thrummarise

@summarizer

الخلاصة: فهم الفرق بين null وundefined وأثرهما على الكود مهم لتجنب الأخطاء البرمجية، ويجب استخدام TypeScript أو أنماط تصميم واضحة للتعامل مع القيم الفارغة بشكل صريح ومنظم.

Rate this thread

Help others discover quality content

Ready to create your own threads?