scope ؛ قسمت هفدهم آموزش جاوا اسکریپت
در این قسمت از آموزش جاوا اسکریپت کدپز به مبحث scope میپردازیم. امیدوارم مطالب که تو این قسمت بیان میشه براتون مفید باشه.
scope چیست؟
scope مرتبط با مباحث accessibility (دسترسی) و visibility (نمایانی) است که در اصل این مباحث در برنامه نویسی به یک مفهوم اشاره میکنند.
هر دوی این کلمات به این مبحث اشاره می کنند که یک متغیر یا عنصر دیگر در یک قطعه کد، از کدام قسمت ها قابل دسترسی باشد.
در جاوا اسکریپت دو نوع scope داریم:
local یا منطقه ای
global یا سراسری
در جاوا اسکریپت، اشیاء و توابع نیز متغیر به حساب میآیند. بر این اساس میتوان گفت scope ها سطح دسترسی متغیر ها (variables)، اشیاء (objects) و توابع (functions) را تعیین میکنند.
یکی از مهم ترین مباحث مربوط به scope، بحث توابع است. در جاوا اسکریپت هر تابع یک scope جداگانه تعریف می کند، بنابراین متغیرهایی که در یک تابع تعریف شوند یک scope از نوع محلی نسبت به آن تابع پیدا می کنند. در ادامه با توضیحات بیشتر با این مفهوم آشنا خواهید شد.
local scope یا متغیرهای محلی
اگر متغیری در یک تابع تعریف شود، دامنه اش نسبت به آن تابع محلی خواهد ماند و به اصطلاح میگوییم چنین متغیر هایی، Function scope (دامنهی تابعی) دارند. معنی سادهی آن این است متغیر مورد نظر ما تنها از داخلِ خود تابع در دسترس خواهد بود.
global scope یا متغیر های سراسری
در جاوا اسکریپتscope سراسری یا Global همان شیء window است. شیء window شیء ای است که تمام محتوای window (پنجره ی مرورگر شما) را در اختیار دارد و تمام متغیر های سراسری (global variables) به آن تعلق دارند.
تبدیل scope
اگر مقداری خاص را به متغیری نسبت دهید که به صورت صریح بیان یا اظهار نشده باشد، به شکل خودکار تبدیل به یک متغیر سراسری یا همان global می شود.
منظور از اظهار (declare) استفاده از var هنگام معرفی یک متغیر است. declare مقدار دهی یک متغیر همانطور که قبلا /فتیم به شکل زیر است:
1 |
;var name = alireza |
حالت strict یا سختگیرانه چیست؟
تمام مرورگر های بروز دنیا به شما اجازه میدهند جاوا اسکریپت را در Strict Mode (حالت سختگیرانه) اجرا کنید. در این حالت متغیر ها به هیچ عنوان به صورت خودکار تبدیل به سراسری نمیشوند.
مبحثی که در این قسمت به آن پرداختیم یکی از مباحث کاربردی و مهم در برنامه نویسی جاوا اسکریپت به شمار رفته و بسیاری از خطاهای ابتدایی در برنامه نویسی این زبان مربوط به این قسمت است.
امیدوارم مطالب این قسمت برای شما مفید بوده باشه.برای دیدن مثال هایی از این مبحث به سایت w3schools مراجعه کنید.