0Pricing
JavaScript Academy · درس

الدمج عند null باستخدام ??

وفّروا قيمًا افتراضية لـ null وundefined فقط.

الدمج عند null باستخدام ?? درس مجاني في JavaScript Academy على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في JavaScript Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة JavaScript Academy 4 دروس في المجموع.

توفير القيم الافتراضية

غالبًا ما تحتاجون إلى قيمة بديلة عندما تكون قيمة ما مفقودة. يوفّر عامل الدمج مع القيم الخالية طريقة واضحة لتوفير القيم الافتراضية عند الحاجة فقط.

const name = undefined;
console.log(name ?? "Guest"); // "Guest"

العامل ??

يعيد عامل علامتي الاستفهام القيمة الموجودة على اليمين فقط عندما يكون الجانب الأيسر هو null أو undefined.

console.log(null ?? "fallback");      // "fallback"
console.log(undefined ?? "fallback"); // "fallback"
console.log("hi" ?? "fallback");      // "hi"

لماذا لا نستخدم ||؟

يستخدم العامل المنطقي OR ‏|| قيمة بديلة عند وجود أي قيمة زائفة، بما في ذلك 0 و"" وfalse، وهذا غالبًا لا يناسب البيانات الفعلية.

console.log(0 || 10);  // 10  (probably unwanted)
console.log(0 ?? 10);  // 0   (keeps the real value)

حالة السلسلة الفارغة

مع استخدام ||، تُستبدل السلسلة الفارغة المقصودة؛ أما مع ?? فتظل محفوظة لأن "" ليست قيمة خالية.

const note = "";
console.log(note || "none"); // "none"
console.log(note ?? "none"); // ""

الحفاظ على false

تبقى القيمة الحقيقية false محفوظة مع ??، لكن || يستبدلها.

const enabled = false;
console.log(enabled ?? true); // false
console.log(enabled || true); // true

قراءة الإعدادات بأمان

يُعد ?? مثاليًا للإعدادات التي يكون فيها 0 أو الفراغ خيارين صالحين قد يختارهما المستخدم عمدًا.

function getVolume(settings) {
  return settings.volume ?? 50;
}
console.log(getVolume({ volume: 0 })); // 0

يعمل مع المتغيرات

يعمل مع أي تعبيرات، ويعيد أول معامل ليس قيمة خالية.

let cached = null;
const value = cached ?? computeValue();
function computeValue() { return 99; }
console.log(value); // 99

التقييم بالتوقّف القصير

مثل || و&&، يتوقف ?? عن التقييم مبكرًا: فإذا لم يكن الجانب الأيسر قيمة خالية، فلن يُقيَّم الجانب الأيمن مطلقًا.

function side() { console.log("called"); return 1; }
const x = "ready" ?? side(); // side() never runs
console.log(x);

لا يمكن دمجه مباشرةً مع && أو ||

يؤدي دمج ?? مع && أو || من دون أقواس إلى خطأ في بناء الجملة، لتجنّب الالتباس.

const a = true, b = null;
// const c = a || b ?? 1; // SyntaxError
const c = (a || b) ?? 1;
console.log(c);

معاملات الدالة الافتراضية مقارنةً بـ ??

تُطبَّق المعاملات الافتراضية فقط عندما تكون قيمة الوسيط هي undefined. أما ?? فيتعامل أيضًا مع تمرير null صراحةً.

function greet(name = "Guest") { return "Hi " + name; }
console.log(greet(null)); // "Hi null"
function greet2(name) { return "Hi " + (name ?? "Guest"); }
console.log(greet2(null)); // "Hi Guest"

متى تختارون كل عامل؟

استخدموا ?? عندما تكون 0 أو "" أو false قيمًا صالحة يجب الحفاظ عليها. استخدموا || فقط عندما ينبغي استخدام قيمة بديلة لأي قيمة زائفة.

const retries = 0;
console.log(retries ?? 3); // 0 kept

تحقّق سريع

قارنوا بين العاملين.

مراجعة

يعيد العامل ?? الجانب الأيمن فقط عندما يكون الجانب الأيسر هو null أو undefined، مع الحفاظ على 0 و"" وfalse. لذلك يكون أكثر أمانًا من || عند توفير قيم افتراضية للبيانات الفعلية. كما أنه يتوقف عن التقييم مبكرًا، ولا يمكن دمجه مع &&/|| من دون أقواس.

الأسئلة الشائعة

هل درس «الدمج عند null باستخدام ??» مجاني؟

نعم — نص درس «الدمج عند null باستخدام ??» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة JavaScript Academy، انتقل إلى CoddyKit PRO. تتضمن دورة JavaScript Academy 4 دروس في المجموع.

ماذا ستتعلم في «الدمج عند null باستخدام ??»؟

وفّروا قيمًا افتراضية لـ null وundefined فقط. تتمرن على JavaScript Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ JavaScript Academy؟

لا تُشترط خبرة سابقة. JavaScript Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.

كم من الوقت يستغرق درس «الدمج عند null باستخدام ??»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس JavaScript Academy هذا؟

نعم. كل درس في JavaScript Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. التسلسل الاختياري باستخدام العامل ?.
  2. الدمج عند null باستخدام ??
  3. دمج ?. و??
  4. الاستدعاءات الاختيارية والوصول بالفهرس
← العودة إلى JavaScript Academy