GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

No menu could be recovered. Follow the blue links in the page.

This view

  • Original page
  • New address

GeezerVison is showing fa.javascript.info — کدام متغیرها در دسترس هستند؟

  • آموزش
  • زبان جاوااسکریپت
  • استفاده پیشرفته از تابع‌ها
  • محدوده متغیر، کلوژِر
بازگشت به درس

کدام متغیرها در دسترس هستند؟

اهمیت: 5

تابع makeWorker پایین یک تابع دیگر می‌سازد و آن را برمی‌گرداند. تابع جدید می‌تواند در جایی دیگر فراخوانی شود.

این تابع به متغیرهای بیرون از جایی که ساخته شد دسترسی خواهد داشت یا جایی که فراخوانی می‌شود یا هر دو؟

function makeWorker() {
  let name = "Pete";

  return function() {
    alert(name);
  };
}

let name = "John";

// ساخت یک تابع
let work = makeWorker();

// فراخوانی آن
work(); // چه چیزی نمایش خواهد داد؟

کدام مقدار را نمایش خواهد داد؟ “Pete” یا “John”؟

جواب: Pete.

تابع work() در کد زیر name را از طریق مرجع محیط لغوی بیرونی، از جایی که منشا گرفته است دریافت می‌کند:

پس اینجا نتیجه "Pete" است.

اما اگر let name در makeWorker() وجود نداشت، همانطور که در زنجیره بالا هم می‌بینیم، سپس جستجو به بیرون می‌رفت و متغیر گلوبال را دریافت می‌کرد. در این صورت نتیجه "John" می‌شد.

You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.