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

لماذا يؤدي إعلان متغير وحدة تحكم JavaScript إلى \"غير محدد\"؟

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

Why Does JavaScript Console Variable Declaration Result in \

لماذا يؤدي إعلان متغير JavaScript في وحدة التحكم إلى "غير محدد"

عند الإعلان عن متغير في وحدة تحكم JavaScript باستخدام بناء الجملة var a;, فإنه يطبع "غير محدد". يمكن أن يكون هذا السلوك مفاجئًا وغالبًا ما يتم تناوله في منشورات Stack Overflow. ومع ذلك، تفشل هذه المناقشات في شرح سبب حدوث ذلك بشكل كامل.

يعد سلوك وحدة التحكم نتيجة مباشرة للطريقة التي تقوم بها JavaScript بتقييم التعبيرات. عند تقييم العبارة var a;، تعتبرها JavaScript تعبيرًا من تلقاء نفسها وترجع نتيجتها، والتي هي في الواقع "غير محددة".

والأمر الأكثر إثارة للحيرة هو لماذا تقوم وحدة التحكم أيضًا بطباعة "غير محدد" عند الإعلان عن متغير بقيمة أولية، مثل var a = 3. والمثير للدهشة أن جميع عبارات تعريف المتغيرات في JavaScript (سواء var أو function) تُرجع "غير محددة" إذا كان هناك عبارة أخرى ذات نتيجة "حقيقية".

على سبيل المثال :

> var a = 3;
undefined

> var a = 3; a = 4;
4

> var a = 3; a = 4; var a = 5; function f() {};
4

هذا السلوك متجذر في بيان التقييم، والذي، وفقًا لمواصفات ECMAScript:

  • يُرجع "غير محدد" إذا كانت قيمة إكمال البرنامج الذي تم تقييمه فارغة.

يرجع تقييم العبارة var a = 4 (عادي، فارغ، فارغ)، وهو ما يفي بمعايير إرجاع "غير محدد."

ومع ذلك، يحدد التقييم أيضًا أنه إذا كان قيمة إكمال البرنامج الذي تم تقييمه ليست فارغة، ثم يتم إرجاع قيمة العبارة الأخيرة. في المثال الأخير، a = 4 هي العبارة الأخيرة، لذلك تم إرجاع قيمتها (4).

باختصار، تطبع وحدة تحكم JavaScript "غير محددة" لإعلانات المتغيرات لأن هذه الإعلانات تُرجع "غير محددة" عند تقييمها على أنها التعبيرات. يمكن أن يكون هذا السلوك مربكًا، خاصة عند تعيين قيم أولية للمتغيرات، ولكنه ينبع من آليات التقييم الأساسية لتعبيرات وعبارات JavaScript.

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

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

Copyright© 2022 湘ICP备2022001581号-3