تدمير المصفوفات 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 وc، بينما يتلقى b القيمة 'C' بشكل صحيح يجب أن تستخدم الفواصل المنقوطة بشكل صريح أو تبدأ كل سطر بعامل تشغيل يتطلب إدراج فاصلة منقوطة تلقائيًا (على سبيل المثال، (، [، /،، -، أو `).
يضمن هذا الفهم أن مهام التدمير في ES6 تعمل كما هو متوقع، مما يمنع مقايضات القيمة غير المتوقعة والتخصيصات غير المحددة.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3