Hoisting هو السلوك الافتراضي جافا سكريبت لتحريك الإعلانات إلى الأعلى.
ورفع الإعلانات جافا سكريبت
في جافا سكريبت، يمكن أن يتم تعريف متغير بعد أن تم استخدامه.
بعبارات أخرى؛ يمكن استخدام متغير قبل أن يتم الإعلان عنها.
مثال 1 يعطي نفس النتيجة مثل مثال 2:
مثال 1
x = 5; // Assign 5 to x
elem = document.getElementById("demo"); // Find an element
elem.innerHTML = x;
// Display x in the element
var x; // Declare x
انها محاولة لنفسك » مثال 2
var x; // Declare x
x = 5; // Assign 5 to x
elem = document.getElementById("demo"); // Find an element
elem.innerHTML = x;
// Display x in the element
انها محاولة لنفسك » لفهم هذا، عليك أن تفهم عبارة "hoisting" .
Hoisting هو السلوك الافتراضي جافا سكريبت نقل جميع الإعلانات إلى الجزء العلوي من النطاق الحالي (إلى الأعلى من السيناريو الحالي أو وظيفة الحالية).
لم يتم رفع جافا سكريبت التهيئة
جافا سكريبت المصاعد فقط الإعلانات، وليس التهيئة.
مثال 1 لا يعطي نفس النتيجة مثل مثال 2:
مثال 1
var x = 5; // Initialize x
var y = 7; // Initialize y
elem = document.getElementById("demo"); // Find an element
elem.innerHTML = x + " " + y; // Display x and y
انها محاولة لنفسك » مثال 2
var x = 5; // Initialize x
elem = document.getElementById("demo"); // Find an element
elem.innerHTML = x + " " + y; // Display x and y
var y = 7; // Initialize y
انها محاولة لنفسك » هل يعقل أن ذ غير معرفة في المثال الأخير؟
هذا هو فقط لأن إعلان (فار ص)، وليس التهيئة (= 7) ورفع إلى الأعلى.
بسبب hoisting ، وقد أعلن ذ قبل استخدامها، ولكن لأنه لم يتم رفع التهيئة، قيمة y غير معرف.
مثال 2 هو نفس الكتابة:
مثال
var x = 5; // Initialize x
var y; // Declare y
elem = document.getElementById("demo"); // Find an element
elem.innerHTML = x + " " + y; // Display x and y
y = 7; // Assign 7 to y
انها محاولة لنفسك » أعلن المتغيرات في أعلى!
Hoisting هو (إلى العديد من المطورين) سلوك غير معروف أو تجاهلها من جافا سكريبت.
إذا لا يفهم مطور hoisting ، قد تحتوي على برامج البق (أخطاء).
لتجنب الأخطاء، ودائما يعلن عن المتغيرات في بداية كل نطاق.
وبما أن هذه هي الطريقة التي يفسر جافا سكريبت رمز، هو دائما قاعدة جيدة.
الجافا سكربت في وضع صارم لا يسمح المتغيرات لاستخدامها إذا لم يتم الإعلان عنها.
دراسة "use strict" في الفصل التالي.