Hoisting في جافا سكريبت

الرفع (Hoisting) هو سلوك افتراضي لـ JavaScript حيث يتم رفع الإعلانات إلى أعلى.

يتم رفع الإعلانات في JavaScript

في JavaScript، يمكن إعلان المتغير بعد استخدامه.

بمعنى آخر، يمكن استخدام المتغير قبل إعلانه.

مثال 1 معمثال 2 النتائج متشابهة:

مثال 1

x = 5; // تخصيص 5 لـ x
elem = document.getElementById("demo"); // العثور على العنصر
elem.innerHTML = x;                     // عرض x في العنصر
var x; // إعلان x

جربها بنفسك

مثال 2

var x; // إعلان x
x = 5; // تخصيص 5 لـ x
elem = document.getElementById("demo"); // العثور على العنصر
elem.innerHTML = x;                     // عرض x في العنصر

جربها بنفسك

لفهم هذا، يجب أن تفهم المصطلح "الرفع".

الرفع هو سلوك افتراضي لـ JavaScript حيث يتم رفع جميع الإعلانات إلى أعلى نطاق الحالي (رفع إلى أعلى النص أو العنصر الحالي).

كلمات المفتاح let و const

باستخدام let أو ثابت المتغيرات المعلنة والقيم الثابتة لا يتم رفعها!

يرجى JS Let / ثابت اقرأ المزيد عن let و const في هذا الجزء.

لا يتم رفع التكوين في JavaScript

يرفع JavaScript فقط الإعلان وليس التكوين.

مثال 1 معمثال 2 النتائج ليست متشابهة:

مثال 1

var x = 5; // تعريف x
var y = 7; // تكوين y
elem = document.getElementById("demo"); // العثور على العنصر
elem.innerHTML = x + " " + y;           // عرض x و y

جربها بنفسك

مثال 2

var x = 5; // تعريف x
elem = document.getElementById("demo"); // العثور على العنصر
elem.innerHTML = x + " " + y;           // عرض x و y
var y = 7; // تكوين y 

جربها بنفسك

هل يمكن القول أن y في آخر مثال هو غير معرف؟

هذا لأنه فقط الإعلان (var y) وليس التكوين (=7) يتم رفعه إلى الأعلى.

بسبب hoisting، تم تعريف y قبل استخدامها، ولكن لأن لم يتم رفع التثبيت، يظل قيمة y غير معرفة.

مثال 2 أيضًا:

مثال

var x = 5; // تعريف x
var y;     // تعريف y
elem = document.getElementById("demo"); // العثور على العنصر
elem.innerHTML = x + " " + y;           // عرض x و y
y = 7;    // اعطاء 7 لـ y

جربها بنفسك

اعلن متغيراتك في أعلى الصفحة!

hoisting (بالنسبة لكثير من المطورين) هو سلوك غير معروف أو مغفول عنه في JavaScript.

إذا لم يفهم المطور hoisting، قد يحتوي البرنامج على أخطاء (أخطاء).

لتفادي الأخطاء، من فضلك قم دائمًا بتحديد جميع المتغيرات في بداية كل مجال.

بما أن هذا هو طريقة تفسير JavaScript للكود، من فضلك احافظ على هذه العادة الجيدة.

لا يسمح JavaScript في الوضع الصارم باستخدام المتغيرات غير المعلنة.

الرجاء تعلم الفصل التالي “استخدم صارم。”