كلاهما يمثل "عدم وجود قيمة"، لكن بـ نية وأصل مختلفين.
undefined: غياب قيمة، عادة ما تعيينها محرك JavaScript — متغير معلن لكن لم يُسند له قيمة، خاصية كائن مفقودة، معامل دالة لم تمرره، أو دالة بدونreturn.
كلاهما يمثل "عدم وجود قيمة"، لكن بـ نية وأصل مختلفين.
undefined: غياب قيمة، عادة ما تعيينها محرك JavaScript — متغير معلن لكن لم يُسند له قيمة، خاصية كائن مفقودة، معامل دالة لم تمرره، أو دالة بدون return.null: قيمة "فارغة" مقصودة تقوم أنت بإسنادها لتقول "لا شيء هنا بقصد".let a; // undefined — declared, not assigned
const obj = {};
obj.missing; // undefined — property doesn't exist
function f() {}
f(); // undefined — no return
const b = null; // null — you chose to empty it
null == undefined; // true — loose equality treats them as equal
null === undefined; // false — different types
typeof undefined; // "undefined"
typeof null; // "object" (historical bug)
const value = input ?? "default"; // defaults on EITHER null or undefined
user?.address?.city; // optional chaining — undefined if any link is null/undefined
استخدم null لمسح قيمة بقصد (مثل "لا مستخدم مختار")، وتعامل مع undefined كـ "لم يتم تعيينها بعد". العاملان ?? (الدمج الفارغ) و ?. (السلسلة الاختيارية) يتعاملان مع الاثنين معاً، وهذا هو السبب في استخدامهما على نطاق واسع.