از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
زمان استفاده از var در جاوا اسکریپت
سرفصلهای مطلب
معرفی
در جاوا اسکریپت، var
کلمه کلیدی برای تعریف یک متغیر استفاده می شود. از زمان پیدایش این زبان بخشی از جاوا اسکریپت بوده است و علیرغم معرفی این زبان همچنان بخش مهمی از آن است. let
و const
در ECMAScript 6.
در این بایت، ما به هدف آن می پردازیم var
کلمه کلیدی، تفاوت آن با let
و const
و زمان استفاده یا حذف آن.
چرا از کلمه کلیدی “var” استفاده می کنیم؟
این var
کلمه کلیدی در جاوا اسکریپت برای اعلام یک متغیر و مقداردهی اولیه آن به صورت اختیاری استفاده می شود. var
دارای محدوده تابع است، به این معنی که فقط در تابعی که در آن اعلام شده است قابل دسترسی است. در اینجا یک مثال است:
var name = "John Doe";
function display() {
var age = 30;
console.log(name); // Output: John Doe
console.log(age); // Output: 30
}
display();
console.log(age); // Output: Error: age is not defined
در مثال بالا، name
در سطح جهانی قابل دسترسی است، در حالی که age
فقط در داخل قابل دسترسی است display
تابع.
تفاوت بین ‘var’، ‘let’ و ‘const’
یکی از تفاوت های قابل توجه بین var
، let
، و const
قوانین محدوده آنها است. در حالی که var
دارای محدوده عملکردی است، let
و const
بلوک اسکوپ هستند. این یعنی let
و const
فقط در بلوکی که در آن اعلام شده اند قابل دسترسی هستند.
تفاوت دیگر این است که var
متغیرها را می توان مجدداً اعلام و به روز کرد، اما let
متغیرها فقط می توانند به روز شوند، نه دوباره اعلام شوند. const
متغیرها، روی از سوی دیگر، نه می توان به روز کرد و نه دوباره اعلام کرد.
در اینجا یک مثال برای توضیح این موضوع آورده شده است:
var x = 10;
var x = 20; // This is fine
let y = 10;
let y = 20; // Error: Identifier 'y' has already been declared
const z = 10;
z = 20; // Error: Assignment to constant variable.
چه زمانی از «var» استفاده کنیم و چه زمانی آن را حذف کنیم
با توجه به تفاوت های بین var
، let
، و const
، چه زمانی باید استفاده کنید var
و چه زمانی باید آن را حذف کرد؟
به عنوان یک قاعده کلی، باید استفاده کنید var
زمانی که می خواهید متغیر دارای محدوده تابع یا سراسری باشد. اگر می خواهید متغیر دارای محدوده بلوک باشد، باید از آن استفاده کنید let
یا const
بجای.
توجه داشته باشید: اگر در حال نوشتن کد در ECMAScript 6 یا بالاتر هستید، توصیه می شود از آن استفاده کنید let
و const
بر فراز var
برای خوانایی بهتر و جلوگیری از مشکلات احتمالی با بالا بردن متغیر و اعلام مجدد.
در اینجا یک مثال است:
function varTest() {
var x = 1;
if (true) {
var x = 2; // same variable!
console.log(x); // 2
}
console.log(x); // 2
}
function letTest() {
let x = 1;
if (true) {
let x = 2; // different variable
console.log(x); // 2
}
console.log(x); // 1
}
در varTest
تابع، x
مجدداً در داخل اعلام می شود if
مسدود کردن، اما به دلیل var
دارای محدوده عملکرد است، در واقع یکسان است x
همانطور که خارج از if
مسدود کردن. در letTest
تابع، x
در داخل if
بلوک متفاوت است x
زیرا let
بلوک اسکوپ است.
اشتباهات رایج و روش اجتناب از آنها
این var
کلمه کلیدی می تواند منبع چند اشتباه رایج به خصوص برای مبتدیان باشد. بیایید برخی از این موارد را ببینیم و چگونه می توانید از آنها اجتناب کنید.
اول، یک اشتباه رایج عدم درک دامنه است var
. بر خلاف let
و const
، var
محدوده تابعی است، نه محدوده بلوکی. این بدان معناست که اگر متغیری را با var
داخل یک حلقه یا یک if
بیانیه، خارج از آن بلوک ها قابل دسترسی است.
if (true) {
var x = 5;
}
console.log(x); // Outputs: 5
برای جلوگیری از این، می توانید استفاده کنید let
یا const
برای متغیرهای محدوده بلوک
ثانیا، بالا بردن می تواند باعث رفتار غیر منتظره شود. Hoisting یک مکانیسم جاوا اسکریپت است که در آن متغیرها و اعلان های تابع به بالای محدوده حاوی خود منتقل می شوند. با این حال، فقط اعلان ها بالا می روند، نه مقداردهی اولیه.
console.log(y); // Outputs: undefined
var y = 5;
برای جلوگیری از مشکلات بالا بردن، متغیرهای خود را در بالای محدوده خود اعلام و مقداردهی اولیه کنید.
ECMAScript 5 و ‘var’
قبل از ECMAScript 2015 که با نام ES6 نیز شناخته می شود، var
تنها راه برای اعلام متغیرها در جاوا اسکریپت بود. ES5 پشتیبانی نمی کند let
و const
. اگر با یک پایگاه کد قدیمی کار می کنید یا نیاز به پشتیبانی از مرورگرهای قدیمی دارید که به طور کامل ES6 را پشتیبانی نمی کنند، احتمالاً با var
.
در ES5، var
دو ویژگی اصلی دارد که آن را از آن متمایز می کند let
و const
:
-
محدوده عملکرد: همانطور که قبلا ذکر شد،
var
محدوده تابعی است، نه محدوده بلوکی. -
بالا بردن:
var
اعلامیه ها در بالای محدوده حاوی خود قرار می گیرند.
function example() {
console.log(z); // Outputs: undefined
var z = 5;
}
example();
با وجود این تفاوت ها، var
هنوز هم می توان به طور موثر در ES5 استفاده کرد. فقط از ویژگی های منحصر به فرد و مشکلات احتمالی آن آگاه باشید.
نتیجه
در این بایت، هدف از این بایت را بررسی کرده ایم var
کلمه کلیدی در جاوا اسکریپت، تفاوت آن با let
و const
و زمان استفاده یا حذف آن. ما همچنین برخی از اشتباهات رایج مرتبط با آن را برجسته کرده ایم var
و روش اجتناب از آنها در نهایت، ما لمس کرده ایم روی نقش var
در ECMAScript 5.
(برچسبها برای ترجمه)# جاوا اسکریپت
منتشر شده در 1402-12-30 15:10:03