"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > تدمير مصفوفة ES6: لماذا لا يعمل كما هو متوقع؟

تدمير مصفوفة ES6: لماذا لا يعمل كما هو متوقع؟

تم النشر بتاريخ 2024-11-06
تصفح:141

ES6 Array Destructuring: Why Doesn\'t It Work As Expected?

تدمير المصفوفات ES6: سلوك غير متوقع

في ES6، يمكن أن تؤدي مهمة تدمير المصفوفات إلى نتائج غير متوقعة، مما يترك المبرمجين في حيرة. يتم توضيح أحد هذه الأمثلة بالكود التالي:

let a, b, c
[a, b] = ['A', 'B']
[b, c] = ['BB', 'C']
console.log(`a=${a} b=${b} c=${c}`)

الإخراج المقصود:
a=A b=BB c =C

الناتج الفعلي:
a=BB b=C c=undef

الشرح:

عكس ذلك وفقًا للتوقعات، فإن هذا الرمز لا يعطي المخرجات المطلوبة. بدلاً من ذلك، يقوم بتبديل قيم b وc، ويترك c غير محدد. لفهم سبب حدوث ذلك، نحتاج إلى فحص التعليمات البرمجية عن كثب.

التحليل والتقييم:

في JavaScript، الفواصل المنقوطة اختيارية لتحديد البيانات. بدون الفواصل المنقوطة الصريحة، يتم تحليل الكود كعبارة واحدة:

let a = undefined, b = undefined, c = undefined;
[a, b] = (['A', 'B']
[(b, c)] = ['BB', 'C']);
console.log(`a=${a} b=${b} c=${c}`);

تقسيم البيان:

  • [a, b] = (['A', 'B'] هي مهمة تدميرية، مشابهة لتلك الموجودة في الكود الأصلي.
  • [(b, c)] = ['BB' ، 'C'] هو تعبير إسناد يقوم بتعيين المصفوفة ['BB'، 'C'] إلى المعامل الأيسر. يتم تقييم هذا التعبير إلى نفس المصفوفة.
  • ['A', 'B '[…] هو مرجع خاصية على مصفوفة حرفية، والتي يتم تقييمها إلى غير محدد.
  • (b, c) يستخدم عامل الفاصلة، الذي يتم تقييمه إلى المعامل الأخير (c)، وهو غير محدد.

الآثار:

لذلك، يعين الكود قيمة غير محددة لكل من a وc، بينما يتلقى b القيمة 'C' بشكل صحيح يجب أن تستخدم الفواصل المنقوطة بشكل صريح أو تبدأ كل سطر بعامل تشغيل يتطلب إدراج فاصلة منقوطة تلقائيًا (على سبيل المثال، (، [، /،، -، أو `).

يضمن هذا الفهم أن مهام التدمير في ES6 تعمل كما هو متوقع، مما يمنع مقايضات القيمة غير المتوقعة والتخصيصات غير المحددة.

بيان الافراج أعيد طبع هذه المقالة على: 1729721303 في حالة وجود أي انتهاك، يرجى الاتصال بـ [email protected] لحذفها
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3