جاوا اسکریپت خوش زبان قسمت بیستم
پیوندهای اعلام شده با let و const در واقع محلی برای بلوکی هستند که آنها هستند
در اعلان می شوند، بنابراین اگر یکی از آنها را در داخل یک حلقه ایجاد کنید، کد قبل از و
پس از حلقه نمی تواند آن را “دیدن” کند. در جاوا اسکریپت قبل از 2015، فقط توابع ایجاد می شد
دامنه های جدید، بنابراین اتصالات به سبک قدیمی، ایجاد شده با کلمه کلیدی var، قابل مشاهده هستند
در کل عملکردی که در آن ظاهر می شوند – یا در سراسر جهان
دامنه، اگر در یک تابع نباشند.
اجازه دهید x = 10;
اگر (درست) {
اجازه دهید y = 20;
var z = 30;
console.log(x + y + z);
// → 60
}
// y در اینجا قابل مشاهده نیست
console.log(x + z);
// → 40
هر محدوده می تواند به محدوده اطراف خود نگاه کند، بنابراین x در داخل آن قابل مشاهده است
بلوک در مثال استثنا زمانی است که اتصالات متعدد یکسان باشند
name—در این صورت، کد فقط درونیترین مورد را میبیند. مثلاً وقتی
کد داخل تابع نیمه به n اشاره دارد، این تابع n خود را می بیند نه
جهانی n.
const halve = تابع(n) {
بازگشت n / 2;
};
اجازه دهید n = 10;
console.log(halve(100));
// → 50
console.log(n);
// → 10
محدوده تو در تو
جاوا اسکریپت نه تنها پیوندهای جهانی و محلی را متمایز می کند. بلوک ها و توابع
را می توان در داخل بلوک ها و توابع دیگر ایجاد کرد و چندین درجه تولید کرد
از محل.
به عنوان مثال، این تابع – که مواد لازم برای ساخت را خروجی می دهد
دسته ای از هوموس- عملکرد دیگری در داخل آن دارد:
const hummus = تابع (عامل) {
const ingredient = تابع (مقدار، واحد، نام) {
اجازه دهید ingredientAmount = مقدار * فاکتور;
if (ingredientAmount > 1) {
واحد += “s”;
}
console.log(`${ingredientAmount} ${unit} ${name}`);
};
ماده (1، “کنسرو”، “نخود”)؛
ماده (0.25، “فنجان”، “تاهینی”)؛
ماده (0.25، “فنجان”، “آب لیمو”)؛
ماده (1، “میخک”، “سیر”)؛
ماده (2، “قاشق غذاخوری”، “روغن زیتون”)؛
ماده (0.5، “قاشق چای خوری”، “زیره”)؛
};
کد داخل تابع جزء می تواند فاکتور را که از آن متصل می شود را ببیند
عملکرد بیرونی اما اتصالات محلی آن، مانند واحد یا مقدار عنصر،
در عملکرد بیرونی قابل مشاهده نیستند.
به طور خلاصه، هر محدوده محلی می تواند تمام محدوده های محلی را که حاوی آن هستند نیز ببیند. را
مجموعه ای از اتصالات قابل مشاهده در داخل یک بلوک توسط محل آن بلوک تعیین می شود
در متن برنامه هر محدوده محلی همچنین می تواند تمام محدوده های محلی را ببیند
حاوی آن باشد و همه دامنه ها می توانند دامنه جهانی را ببینند. این رویکرد به الزام آور
رؤیت، محدوده واژگانی نامیده می شود.
به عنوان ارزش عمل می کند
یک تابع binding معمولاً به عنوان یک نام برای یک قطعه خاص عمل می کند
برنامه چنین الزام آور یک بار تعریف می شود و هرگز تغییر نمی کند. این باعث می شود
به راحتی می توان تابع و نام آن را اشتباه گرفت.
اما این دو با هم فرق دارند. یک مقدار تابع می تواند تمام کارهایی را که دیگران انجام می دهند انجام دهد
مقادیر می توانند انجام دهند—شما می توانید آن را در عبارات دلخواه استفاده کنید، نه اینکه فقط آن را فراخوانی کنید. این است
قوانین ارسال دیدگاه در سایت