English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
يملك تعريف الوظيفة في JavaScript ميزة خاصة، حيث يقوم بفحص جميع جمل جسم الوظيفة ويقوم بإعلان جميع المتغيرات "رفعها" إلى أعلى الوظيفة:
'use strict'; function foo() { var x = 'Hello, ' + y; alert(x); var y = 'Bob'; } foo();
على الرغم من أن النمط المشدد strict، لا يُعرض خطأ على الجملة var x = 'Hello, ' + y;، لأن المتغير y تم إعلانه لاحقًا. ولكن يظهر alert Hello, undefined، مما يعني أن قيمة المتغير y هي undefined. هذا بسبب أن محرك JavaScript يرفع إعلان المتغير y تلقائيًا، ولكن لا يرفع تعيين المتغير y.
بالنسبة للوظيفة foo() المذكورة أعلاه، كود التي يراه محرك JavaScript يشبه:
function foo() { var y; // رفع إعلان المتغير y var x = 'Hello, ' + y; alert(x); y = 'Bob'; }
بسبب هذه "ميزة" الغريبة لـ JavaScript، يرجى الالتزام بقاعدة "إعلان جميع المتغيرات في بداية الجسم الخاص بالوظيفة" عند تعريف المتغيرات في الداخل.
function foo() { var x = 1, // x تم تعيينه إلى 1 y = x + 1, // y تم تعيينه إلى 2 z, i; // z و i غير معرفة // جمل أخرى: للبدء في i=0; i<100; i++ { ... } }
هذا النص حول فهم متعمق لرفع المتغيرات في JavaScript هو كل محتوى الذي أشاركه معكم، وأتمنى أن يكون مرجعًا جيدًا وأن يتلقى الجميع الدعم الكبير لتعليمات呐喊.