میدان دید متغیرها در جاوا اسکریپت
در جاوا اسکریپت، ما با استفاده از کلمه ی کلیدی var متغیرها را قبل از اینکه از آنها استفاده کنیم، تعریف می کنیم:
> var x;
> x = 3;
> y = 4;
ReferenceError: y is not defined
ما می توانیم چند متغیر را با استفاده از یک دستور var تعریف کنیم:
var x = 1, y = 2, z = 3;
اما ما توصیه می کنیم که برای تعریف هر متغیر، از یک کلمه ی کلیدی var استفاده کنید(علتش در بخش سینتکس در صفحه 382 آمده است). بنابراین متغیرهای بالا به صورت زیر در می آیند:
var x = 1;
var y = 2;
var z = 3;
به دلیل در ابتدا قرار گرفتن متغیرها(به صفحه 23 مراجعه کنید)، بسیار خوب است که متغیرها را در ابتدای تابع تعریف کنید.
میدان دید(scope) متغیرهای جاوا اسکریپت در تابع
میدان یا محدوده ی دید متغیرها در درون یک تابع، همواره خود تابع است؛ نه بلوکی که در آن تعریف شده اند. بعنوان مثال داریم:
function foo() {
var x = -512;
if (x < 0) { // (1)
var tmp = -x;
...
}
console.log(tmp); // 512
}
در کدهای بالا مشاهده می کنید که متغیر tmp به بلوک دستور if محدود نشده است و میدان دید آن از ابتدا تا انتهای بلوک تابع است.
متغیرها در ابتدا قرار می گیرند(Hoisted)
اعلان(تعریف) هر متغیر در ابتدای کدها قرار می گیرد؛ یعنی این اعلان در ابتدای تابع قرار می گیرد اما چیزهای که به آن انتساب داده شده اند سرجای خود باقی می مانند. بعنوان مثال، در تابع زیر به متغیر خط 4 توجه کنید:
function foo() {
console.log(tmp); // undefined
if (false) {
var tmp = 3; // (1)
}
}
تابع بالا، به صورت زیر عمل می کند:
function foo() {
var tmp; // hoisted declaration
console.log(tmp);
if (false) {
tmp = 3; // assignment stays put
}
}
کلوژرها در جاوا اسکریپت
هر تابع، به متغیرهای تابعی که آن را احاطه کرده است، متصل می شود؛ حتی اگر میدان دید آن عوض شود. به مثال زیر توجه کنید:
function createIncrementor(start) {
return function () { // (1)
start++;
return start;
}
}
در کدهای بالا، تابع قرار گرفته در خط 2 در داخل تابع خط 1 قرار دارد، اما به نسخه ی تازه ای از آرگومان start متصل است:
> var inc = createIncrementor(5);
> inc()
6
> inc()
7
> inc()
8
کلوژر(closure )، تابعی است که به متغیرهای میدان های دید احاطه کننده ی خود متصل است. از این رو، آنچه که تابع createIncrementor() برمی گرداند(return می کند) یک کلوژر است.
ص 24
- بازدید: 448
1. سعی کنید نظرات شما مرتبط با مقاله ی مورد نظر باشد، در غیر این صورت پاسخ داده نخواهد شد.
2. سوالات خود را به صورت کوتاه بیان کنید و از پرسیدن چند سوال به طور همزمان خودداری کنید.
3. سوال خود را به طور واضح بیان کنید و از کلمات مبهم استفاده نکنید.