اذهب إلى المحتوى
  • 0

ما هي "رفع الدوال Hoisting" في جافاسكريبت؟

Youssef Nasr2

السؤال

Recommended Posts

  • 2

في العادة يتم تعريف الدوال (إنشائها) قبل إستدعائها:

function hello() {
  console.log('hello, world!');
}

hello();

أما رفع الدوال أو Hoisting تعني إستدعاء الدالة قبل تعريفها، على سبيل المثال إن قمنا بإستدعاء دالة قبل إنشائها، فمن الطبيعي أن يظهر لنا خطأ:

myFuntion();	// Uncaught ReferenceError: myFuntion is not defined

هنا قمت بإستدعاء دالة myFunction ولكن هذه الدالة غير موجودة، وبالتالي يظهر خطأ يخبرني بذلك، وهذا الأمر طبيعي في أغلب لغات البرمجة، ولكن بالنسبة للغة JavaScript (وبعض اللغات الأخرى) يمكن إستدعاء دالة ما قبل تعريفها، على النحو التالي:

hello();	// hello, world!

function hello() {
  console.log('hello, world!');
}

في المثال السابق قمت بإستدعاء الدالة hello قبل حتى أن أقوم بإنشائها (الإستدعاء يسبق إنشاء الدالة بحسب ترتيب الأسطر)، ويمكن عمل هذا الأمر كذلك للمتغيرات التي يتم إنشائها عبر الكلمة المفتاحية var بدون مشكلة:

console.log(x);	// undefined

var x;
x = 5;

الكود السابق لن يسبب خطأ Error ولكن ستكون قيمة x هي undefined (غير معرف) إلى أن يتم تغير قيمتها لاحقًا

جدير بالذكر أن عملية الرفع Hoisting لا تعمل في كل مكان، فلن تتمكن من إستعمالها في بيئة تفاعلية مثل الـ Console في أدوات المطورين Dev Tools في المتصفح، وكذلك إن بدأ ملف JavaScript بجملة "use strict" فلن تتكمن من إستخدام هذه الميزة:

"use strict"

console.log(x);	// Uncaught ReferenceError: x is not defined

var x;
x = 5;

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...