از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
زمان استفاده از 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

