با عرض سلام و وقت بخیر خدمت کاربران سایت پی وی لرن ، از نسخه ی ECMAScript 2015 دو کلمه ی کلیدی let و const در جاوا اسکریپت ارائه شد، در بخش قبلی به بررسی و مرور مباحث کلمه ی کلیدی let و تفاوت آن با کلمه کلیدی var پرداختیم ، در این بخش نیز قصد داریم به بررسی و تحلیل کلمه ی کلیدی const و کاربردهای آن بپردازیم. const تقریبا همانند let عمل می کند، با این تفاوت که مقادیر const بعد از تعریف قابل تغیر و تعریف مجدد نیستند. پس از آن بیشتر برای تعریف مقادیر ثابت در جاوا اسکریپت استفاده می شود. در ادامه ی این مبحث جهت آشنایی با کلمه کلیدی const در جاوا اسکریپت با ما همراه باشید.
در این مبحث شما را با تعریف مقادیر ثابت در جاوا اسکریپت با استفاده از کلمه کلیدی const در جاوا اسکریپت و تفاوت آن با let و var آشنا می کنیم.
همانطور که گفته شد ویژگی اصلی const در این است که مقادیر آن در طول برنامه قابل تغیر نیست :
1 2 3 | const PI = 3.141592653589793; PI = 3.14; // This will give an error PI = PI + 10; // This will also give an error |
تعریف مجدد متغیر با const همانند let هنگامی که داخل بلوک scope قرار می گیرند می باشد.
x نشان داده شده در این بلوک، در این مثال، مشابه x بیان شده در خارج از بلوک نیست:
1 2 3 4 5 6 7 | var x = 10; // Here x is 10 { const x = 2; // Here x is 2 } // Here x is 10 |
متغیرهای ثابت در جاوا اسکریپت باید در زمان تعریف حتما مقدار بگیرند :
مثال-۱ : تخصیص اشتباه:
1 2 | const PI; PI = 3.14159265359; |
مثال-۲:تخصیص صحیح :
1 | const PI = 3.14159265359; |
کلمه کلیدی const کمی گمراه کننده است.
این مقدار ثابت را تعریف نمی کند. این یک مرجع ثابت برای یک مقدار را تعریف می کند.
به همین دلیل ما نمی توانیم مقادیر اولیه را تغییر دهیم، اما می توانیم خواص اشیاء ثابت را تغییر دهیم.
اگر یک مقدار ابتدایی را به یک ثابت اختصاص دهیم، نمی توانیم مقدار اولیه را تغییر دهیم:
1 2 3 | const PI = 3.141592653589793; PI = 3.14; // This will give an error PI = PI + 10; // This will also give an error |
شما می توانید خصوصیات آبجکت های ثابت را تغییر دهید.
1 2 3 4 5 6 7 8 | // You can create a const object: const car = {type:"Fiat", model:"500", color:"white"}; // You can change a property: car.color = "red"; // You can add a property: car.owner = "Johnson"; |
اما تغییر مقادیر اولیه در آبجکت های ثابت مجاز نیست :
1 2 | const car = {type:"Fiat", model:"500", color:"white"}; car = {type:"Volvo", model:"EX60", color:"red"}; // ERROR |
شما می توانید عناصر یک آرایه ی ثابت را تغییر دهید :
1 2 3 4 5 6 7 8 | // You can create a constant array: const cars = ["Saab", "Volvo", "BMW"]; // You can change an element: cars[0] = "Toyota"; // You can add an element: cars.push("Audi"); |
اما شما نمی توانید یک آرایه ی ثابت را تغییر دهید :
1 2 | const cars = ["Saab", "Volvo", "BMW"]; cars = ["Toyota", "Volvo", "Audi"]; // ERROR |
کلمه کلیدی const در مرورگر Internet Explorer 10 و نسخه های قدیمی تر پشتیبانی نمی شود.
جدول زیر اولین نسخه از مرورگر ها را که از کلمه کلیدی const پشتیبانی می کند را نشان می دهد :
Chrome | IE / Edge | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome 49 | IE / Edge 11 | Firefox 36 | Safari 10 | Opera 36 |
Mar, 2016 | Oct, 2013 | Feb, 2015 | Sep, 2016 | Mar, 2016 |
تعریف مجدد متغیرها با var در هر جای برنامه مجاز است.
1 2 3 | var x = 2; // Allowed var x = 3; // Allowed x = 4; // Allowed |
تعریف مجدد متغیرهایی که با var or let تعریف شده اند، با const چه در همان scope و چه در همان بلوک مجاز نیست :
1 2 3 4 5 6 | var x = 2; // Allowed const x = 2; // Not allowed { let x = 2; // Allowed const x = 2; // Not allowed } |
تعریف مجدد یک متغیر ثابت که خارج از بلوک { } تعریف شده، چه در همان scope و چه در همان بلوک مجاز نیست :
1 2 3 4 5 6 7 8 9 10 11 12 13 | const x = 2; // Allowed const x = 3; // Not allowed x = 3; // Not allowed var x = 3; // Not allowed let x = 3; // Not allowed { const x = 2; // Allowed const x = 3; // Not allowed x = 3; // Not allowed var x = 3; // Not allowed let x = 3; // Not allowed } |
تعریف مجدد متغیری که با const تعریف شده است، در scope و یا سایر بلوک مجاز است :
1 2 3 4 5 6 7 8 9 | const x = 2; // Allowed { const x = 3; // Allowed } { const x = 4; // Allowed } |
متغیرهایی که با var تعریف شده باشند، به بالا hoist می شوند.
بنابراین در این حالت شما می توانید از یک متغیر قبل از تعریف کردن آن استفاده کنید :
1 2 | carName = "Volvo"; // You CAN use carName here var carName; |
متغیرهایی که با const تعریف شده باشند، به بالا hoist نمی شوند.
بنابراین یک متغیر const را نمی توان قبل از تعریف آن استفاده کرد :
1 2 | carName = "Volvo"; // You can NOT use carName here const carName = "Volvo"; |
از نسخه های ۲۰۱۵ جاوا اسکریپت به بعد دو کلمه ی کلیدی let و const معرفی و ارائه شد، که در بخش قبلی کلمه کلیدی let را بررسی کردیم، در این بخش نیز چگونگی تعریف مقادیر ثابت در جاوا اسکریپت را با استفاده از کلمه کلیدی const در جاوا اسکریپت بررسی کردیم.