با سلام خدمت شما دوستان عزیز ،امیدوارم که حالشما خوب باشه و اموزشهای ما برای شمامفیدواقع گردد.در جاوا اسکریپت توابع (functions) و اشیا (objects) نیز متغیر تلقی می شوند.
در زبان مبتنی بر اشیا جاوا اسکریپت، scope به مجموعه ی از متغیرها، اشیا و توابع گفته می شود که شما به آن ها دسترسی دارید.
حوزه یا scope جاوا اسکریپت توابع هستند و اینscope ها داخل تابع تغییر یافته و تعریف می شوند.
متغیرهای محلی جاوا اسکریپت
متغیرهایی که داخل یک تابع تعریف می شوند، در واقع متغیرهای محلی / local آن تابع محسوب می شوند.
متغیرهای محلی (local variables)، حوزه دسترسی یا scope آن ها نیز محلی تلقی می گردد، بدین معنا که دسترسی به آن ها تنها داخل خود تابع امکان پذیر می باشد.
مثال :
نمونه یک
?
۱
۲
۳
۴
۵
۶
۷
۸
۹
myFunction();
document.getElementById(“demo”).innerHTML =
“I can display ” + typeof carName;
function myFunction() {
var carName = “Volvo”;
}
از آنجایی که متغیرهای محلی تنها داخل توابع مختص به خود شناخته می شوند، متغیرهایی که با متغیرهای محلی (داخل تابع مربوط) هم نام هستند، می توانند در توابع دیگر بکار گرفته شوند، به عبارتی روشن تر شما می توانید در توابع مختلف، متغیرهای محلی با نام های یکسان داشته باشید.(متغیرهای محلی تنها توسط آن تابعی که آنها را معرفی کرده شناخته می شوند).
متغیرهای محلی زمانی ایجاد می شوند که تابعی راه اندازی شود (کار خود را آغاز کند) و هنگامی نیز حذف می گردند که تابع عملیات خود را به پایان رسانده باشد / متغیرهای محلی مجرد اینکه عملیات تابع تکمیل شد، خود به خود حذف می گردند.
متغیرهای سراسری / عمومی (global variables)
متغیری که بیرون یک تابع تعریف شود، متغیر Global (سراسری) نامیده می شود.
یک متغیر سراسری دارای حوزه ی دسترسی سراسری است، بدین معنا که کلیه ی اسکریپت ها و توابع موجود در یک صفحه ی وب امکان دستیابی به آن را دارند.
مثال :
نمونه دو
?
۱
۲
۳
۴
۵
۶
۷
var carName = “Volvo”;
myFunction();
function myFunction() {
document.getElementById(“demo”).innerHTML =
“I can display ” + carName;
}
اگر به متغیری که هنوز تعریف یا اعلان نشده مقداری تخصیص دهیم، آن متغیر خودکار یک متغیر سراسری (global) تلقی می گردد.
در نمونه کد ذیل با اینکه carName داخل یک تابع تعریف شده، اما یک متغیر سراسری تلقی می گردد (زیرا که متغیر مورد نظر از پیش اعلان نگردیده است).
مثال
نمونه سه
?
۱
۲
۳
۴
۵
۶
۷
۸
۹
myFunction();
document.getElementById(“demo”).innerHTML =
“I can display ” + carName;
function myFunction() {
carName = “Volvo”;
}
طول عمر متغیرها (Lifetime of varabiles)
طول عمر یک متغیر جاوا اسکریپت درست از زمانی که آن متغیر اعلان می گردد، آغاز گشته و حساب می شود.
همان طور که پیش تر ذکر شد عمر یک متغیر محلی محدود به زمان شروع اجرا و تکمیل عملیات تابع است، یعنی بمحض اینکه تابع تکمیل شود متغیر محلی نیز عمرش به پایان رسیده و حذف می شود.
متغیرهای سراسری یا عمومی نیز هنگامی که صفحه ی وب بسته می شود، همگی حذف می گردند.
آرگومان های تابع (function arguments)
آرگومان (پارامتر) های یک تابع به عنوان متغیرهای محلی داخل آن تابع عمل می کنند.
متغیرهای سراسری در HTML
حوزه دسترسی سراسری (global scope) در جاوا اسکریپت شامل کل محیط جاوا اسکریپت می شود (از هرجای جاوا اسکریپت یا نقطه ی صفحه می توان به متغیرها دسترسی پیدا کرد).
در HTML، حوزه ی عمومی یا سراسری (Global Scope) شی window را شامل می شود: تمامی متغیرهای سراسری متعلق به شی window هستند و از این رو می توان از هر نقطه ی از شی window به متغیرهای عمومی دسترسی پیدا کرد.
مثال
نمونه چهار
?
۱
۲
۳
۴
۵
۶
۷
۸
۹
myFunction();
document.getElementById(“demo”).innerHTML =
“I can display ” + window.carName;
function myFunction() {
carName = “Volvo”;
}
مهم
آیا می دانستید که متغیرها (یا توابع) سراسری می تواند متغیرها و توابع متعلق به شی window را بازنویسی / overwrite کنند؟ هر تابعی، حتی خود شی window، قادر است متغیرها و توابع سراسری را بازنویسی کند.