null مقابل undefined
نوعان مختلفان من الغياب
null مقابل undefined درس مجاني في Zig Academy على CoddyKit. هذا هو الدرس 4 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Zig Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Zig Academy 4 دروس في المجموع.
كلمتان، معنيان مختلفان
يحتوي Zig على كل من null وundefined، وهما ليسا الشيء نفسه. والخلط بينهما مصدر شائع للأخطاء المربكة.
null تعني عدم وجود قيمة
إن null حالة حقيقية ومحددة: فهي تعني أن النوع الاختياري يحتوي عمدًا على لا شيء. إنها قيمة ذات معنى ويمكن التحقق منها.
const x: ?i32 = null;undefined تعني غير محدد
تعني undefined أن مساحة التخزين موجودة، لكن محتوياتها بيانات عشوائية. وأنت تتعهد بكتابة قيمة حقيقية قبل قراءتها.
var buf: [4]u8 = undefined;الأنواع الاختيارية فقط تحتوي على null
لا يمكنك إسناد null إلا إلى الأنواع الاختيارية. فلن يقبله i32 عادي أبدًا، لأن الغياب ليس جزءًا من نوعه.
يمكن أن يكون أي نوع undefined
وعلى العكس، يمكن أن يبدأ أي متغير تقريبًا على هيئة undefined لحجز الذاكرة الآن وتعبئتها بعد لحظة.
var total: i32 = undefined;لا مشكلة في قراءة null
التحقق من قيمة اختيارية مقابل null آمن تمامًا ومتوقع؛ فهذه هي الطريقة تحديدًا لاكتشاف قيمة غائبة.
قراءة undefined خطأ
تُعد قراءة قيمة ما زالت undefined سلوكًا غير قانوني. بل إن البنى الآمنة تملؤها ببايتات 0xAA لكشف الخطأ.
وعد تقطعه لنفسك
فكّر في undefined بوصفها عقدًا: تتعهد بالإسناد قبل الاستخدام. وإذا خالفت ذلك، فستقرأ بيانات عديمة المعنى وغير متوقعة.
نمط شائع للمخزن المؤقت
من الأساليب الشائعة التصريح عن مخزن مؤقت بوصفه undefined، ثم ملؤه فورًا من عملية قراءة أو استدعاء تنسيق.
var line: [256]u8 = undefined;اختر الأداة المناسبة
استخدم null لتمثيل الاختيارية الحقيقية. واستخدم undefined فقط لتخطي تهيئة زائدة ستستبدلها مباشرةً.
سؤالان مختلفان تمامًا
تجيب null عن سؤال: هل توجد قيمة؟ بينما تجيب undefined عن سؤال: هل كُتبت الذاكرة بعد؟ إن إبقاءهما منفصلتين يحافظ على سلامتك.
تحقق سريع
تعلن var buf: [8]u8 = undefined; ثم تقرأ buf[0] قبل الكتابة إليه. ما طبيعة ذلك؟
مراجعة
ميّزت بين null، وهي قيمة غياب حقيقية للأنواع الاختيارية، وundefined، وهي ذاكرة غير مهيأة يجب الكتابة إليها أولًا. فكرتان لا ينبغي الخلط بينهما. 🧠
الأسئلة الشائعة
هل درس «null مقابل undefined» مجاني؟
نعم — نص درس «null مقابل undefined» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Zig Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Zig Academy 4 دروس في المجموع.
ماذا ستتعلم في «null مقابل undefined»؟
نوعان مختلفان من الغياب تتمرن على Zig Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Zig Academy؟
لا تُشترط خبرة سابقة. Zig Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 4 من أصل 4.
كم من الوقت يستغرق درس «null مقابل undefined»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Zig Academy هذا؟
نعم. كل درس في Zig Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- التصريح عن الأنواع الاختيارية
- إلغاء التغليف بأمان باستخدام if وorelse
- المؤشرات الاختيارية و?*T
- null مقابل undefined