آموزش جاوا اسکریپت – فصل بیست و پنجم: مفهوم Hoisting

مفهوم Hoisting به معنای بالا بردن، درواقع یک تئوری است تا یک قابلیت. در زبان جاوا اسکریپت می توانید از فانکشن ها و متغیر ها قبل از تعریف آنها نیز استفاده کنید، این به علت وجود مفهوم Hoisting جاوا اسکریپت است که در این فصل از آموزش های نتران به شرح آن خواهیم پرداخت.

جاوا اسکریپت - فصل بیست پنجم: مفهوم Hoisting

در سایر زبان های برنامه نویسی یا اسکریپت نویسی سمت سرور متغیر ها و فانکشن ها باید قبل از استفاده تعریف شوند.

در زبان جاوا اسکریپت می توانید از فانکشن ها و متغیر ها قبل از تعریف آنها نیز استفاده کنید.

این قابلیت به این خاطر است که کامپایلر جاوا اسکریپت تمام تعریف متغیر ها را به صورت اتوماتیک به بالای اسکریپت انتقال می‌دهد تا هیچگونه پیغام خطایی در آینده ایجاد نشود. به این مفهوم بالا بردن یا hoisting گفته می شود.

مفهوم hoisting در جاوا اسکریپت

مثال زیر این مفهموم را بهتر نشان می دهد:

x = 1;

alert('x = ' + x); // display x = 1

var x;

فصل 25 – مثال 1

همچنین با این مفهوم یک متغیر می‌تواند به یک متغیر دیگر انتساب داده شود قبل از تعریف هر دو متغیر، مانند مثال زیر:

x = 1;
y = x;

alert('x = ' + x);
alert('y = ' + y);

var x;
var y;

فصل 25 – مثال 2

مفهوم hoisting یا بالا بردن فقط در هنگام تعریف یک متغیر انجام پذیر است نه در هنگامی که به آن متغیر در همان خط تعریف یک مقدار انتساب میدهیم.

به مثال زیر توجه کنید، پیغام آلرت برابر undefined خواهد بود:

alert('x = ' + x); // display x = undefined
        
var x = 1;

فصل 25 – مثال 3

در مثال بالا پیغام undefined به این علت است که مفهوم hoisting فقط برای تعریف متغیر به عنوان مثال به صورت var x; کار می کند.

مفهوم بالا بردن یا Hoisting در تعریف فانکشن ها

زبان جاوا اسکریپت به همان روشی که مفهوم hoisting را برای تعریف متغیرها اعمال می‌کند، برای تعریف فانکشن ها نیز اعمال خواهد کرد.

مثال زیر نشان دهنده مفهوم hoisting در هنگام تعریف یک فانکشن در زبان جاوا اسکریپت است:

alert(Sum(5, 5)); // 10

function Sum(val1, val2)
{
    return val1 + val2;
}

فصل 25 – مثال 4

دقت کنید که زبان جاوا اسکریپت تعریف عبارات عملیاتی یا همان function expression را به بالا منتقل نمی کند. به مثال زیر توجه کنید:

Add(5, 5); // error

var Add = function Sum(val1, val2)
{
    return val1 + val2;
}

فصل 25 – مثال 5

در Hosting جاوا اسکریپت تعریف فانکشن ها بالاتر از تعریف متغیرها قرار خواهد گرفت

جاوا اسکریپت به طور اتوماتیک تعریف فانکشن ها را بالاتر از تعریف متغیرها قرار خواهد داد، مثال زیر این موضوع را اثبات می کند:

alert(UseMe);

var UseMe;

function UseMe()
{            
    alert("UseMe function called");
}

فصل 25 – مثال 6

مثال بالا تعریف فانکشن UseMe را نشان خواهد داد. این موضوع بیان می‌کند که تعریف فانکشن ها در زبان جاوا اسکریپت بالاتر از تعریف متغیرها قرار خواهد گرفت.

ویدیوها و مطالب مشابه