English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

فهم متعمق لرفع المتغيرات في JavaScript

يملك تعريف الوظيفة في 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 هو كل محتوى الذي أشاركه معكم، وأتمنى أن يكون مرجعًا جيدًا وأن يتلقى الجميع الدعم الكبير لتعليمات呐喊.

من المحتمل أن تود