كي وردconst براي تعريف متغير درES6(2015) براي جاوااسكريپت اعلام شد .وداراي مشخصات زيراست.
متغيري كه با كي وردconst تعريف ميشود، نمي تواند انتساب مجدد داشته باشد . بعبارتي متغير فوق ثابت بوده وفقط خواندني است .البته براي آرايه وشئ متفاوت است كه در موردآن بحث ميشود.
مثال ـ تعريف متغير باconst روال نادرست .
const PI = 3.141592653589793;
PI = 3.14; // This will give an error
PI = PI + 10; // This will also give an error
متغير تعريفي جاواسكريپت با كي وردconst در هنگام تعريف بايد مقدار دهي شود. يعني دستور تعريف متغير بايد شامل انتساب مقدار براي متغير باشد.
تعريف درست متغير
const PI = 3.14159265359;
تعريف نادرست متغير
const PI;
PI = 3.14159265359;
هميشه با كي وردconst متغيريكه مقدارش راميدانيد وتغيير نميكند، تعريف نمائيد .
كي وردconst براي تعريف موارد زير استفاده ميشود .
كي وردconst كمي گمراه كننده است .آن مقدار ثابتي را تعريف نميكند، بلكه يك ارجاعي ثابت را بيك مقدار تعريف مي نمايد .بهمين دليل نميتوان با آن:
ميتوان عناصر يك آرايه ثابت را تغييرداد.
مثال ـ تغيير عناصر آرايه ثابت.
// 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");
اما نمي توان يك آرايه ثابت را با انتساب مجدد معرفي كرد.
مثال ـ نمونه انتسا ب مجدد غير قابل قبول آرايه ثابت
const cars = ["Saab", "Volvo", "BMW"];
cars = ["Toyota", "Volvo", "Audi"]; // ERROR
در مثال بالاهم براي كنترل قابل قبول بودن يا نبودن انتساب مجدد، از كي وردtry استفاده شده است . اين كنترل مطابق زيراست.
<script> try { const cars = ["Saab", "Volvo", "BMW"]; cars = ["Toyota", "Volvo", "Audi"]; } catch (err) { document.getElementById("demo").innerHTML = err; } </script >
دراين اسكريپت اگر بلوكtry { } اجرايش موفقيت آميز نباشد ، بلوكcatch (err){ } اجرا ميشود كه خطاي عدم موفقيت را نشان ميدهد.
ميتوان ويژگي هاي شئ ثابت را تغيير داد.
مثال ـ تغيير ويژگي شئ ثابت
// 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";
اما نميتوان انتساب مجددي براي شئ اعلام نمود .مشابه مثال زير كه امكان پذيرنيست.
const car = {type:"Fiat", model:"500", color:"white"};
car = {type:"Volvo", model:"EX60", color:"red"}; // ERROR
Keyword | Scope | Redeclaer | Reassign | Hoisted | Binds this |
---|---|---|---|---|---|
var | NO | Yes | Yes | Yes | Yes |
let | Yes | No | Yes | No | No |
const | Yes | No | No | No | No |
مزيت كي ورد هاي تعريف متغير:
موارد نا مطلوب كي وردهاي تعريف متغير:
كي ورد هايlet , const توسطInternal Explorer 11 و يا قبلي آن پشتيباني نمي شوند.
جدول زير اولين نسخه هاي هستند كه مرور انهارا كامل پشتيباني ميكنند.
49.0 | 12.0 | 36.0 | 11.0 | 36.0 |
Mar 2016 | Jul 2015 | Jan 2015 | Sep 2017 | Mar 2016 |
تعريف متغير باconst مشابه let داراي ميدان بلوكي است .
مثال ـ دراين مثال متغيرx تعريفي در بلوك مشابه x تعريفي خارج از بلوك نيست .آنها دو متغير مستقل در بلوكهاي خود هستند.
const x = 10; // Here x is 10 { const x = 2; // Here x is 2 } // Here x is 10
در مثال بالا اگر از نظر ترتيب دستوري در نظر گرفته شود، آخرين مقدار متغيرx برابر 2 بايد باشد، اما براساس قانون بلوكي متغير مقدارآن10 ميباشد.وهمان طور كه گفته شد آنها دومتغيرند.
تعريف مجدد متغير در جاوااسكريپت با كي وردvar هر جاي برنامه مجازاست .
مثال ـ تعريف مجدد متغير باvar
var x = 2; // Allowed var x = 3; // Allowed x = 4; // Allowed
تعريف مجدد متغير موجود كه با كي وردlet يا var تعريف شده است با كي وردconst امكان پذير نميباشد. البته خارج از بلوك آن متغير در بلوكي ديگر امكان پذيراست.
مثال ـ مورد فوق
var x = 2; // Allowed const x = 2; // Not allowed { let x = 2; // Allowed const x = 2; // Not allowed } { const x = 2; // Allowed const x = 2; // Not allowed }
انتساب مجدد يك متغير موجود باconst درهمان بلوك امكان پذير نيست .به مثال زير توجه كنيد.
const x = 2; // Allowed x = 2; // Not allowed var x = 2; // Not allowed let x = 2; // Not allowed const x = 2; // Not allowed { const x = 2; // Allowed x = 2; // Not allowed var x = 2; // Not allowed let x = 2; // Not allowed const x = 2; // Not allowed }
تعريف مجدد متغيري ازconst در ميدان يا بلوك ديگري امكان پذيراست .
مثال ـ مورد فوق
const x = 2; // Allowed { const x = 3; // Allowed } { const x = 4; // Allowed }
متغيريكه قبل از تعريف مورد استفاده قرار گيرد، آنرا برافراشته"Hoisted"گويند .
متغير برافراشته را ميتوان باvar هر جائي تعريف نمود .
مثال ـ نمونه زير درست است.
carName = "Volvo";
var carName;
اگر متغيري را قبل از تعريف باconst استفاده نمائيم، با خطا برخورد ميكنيم.
مثال ـ نمونه بالا
alert (carName);
const carName = "Volvo";