تعريف ثابتها در جاوااسكريپت JavaScript const

Previous >    <Next  

‎كي ورد‎const‎ براي تعريف متغير در‎ES6(2015)‎ براي ‎جاوااسكريپت اعلام شد .وداراي مشخصات زيراست.

‎عدم انتساب مجددCannot be Reassgnment -‎

‎متغيري كه با كي ورد‎const‎ تعريف ميشود، نمي تواند انتساب مجدد داشته باشد . ‎بعبارتي متغير فوق ثابت بوده وفقط خواندني است .البته براي آرايه وشئ متفاوت است كه در موردآن ‎بحث ميشود.

‎مثال ـ تعريف متغير با‎const‎ روال نادرست .

const PI = 3.141592653589793;
PI = 3.14;      // This will give an error
PI = PI + 10;   // This will also give an error

--(go to editor for change code and run)

‎تعريف متغيرباانتسابMust be Assigned -‎

‎متغير تعريفي جاواسكريپت با كي ورد‎const‎ در هنگام تعريف بايد مقدار دهي شود. ‎يعني دستور تعريف متغير بايد شامل انتساب مقدار براي متغير باشد.

‎تعريف درست متغير

const PI = 3.14159265359;

‎تعريف نادرست متغير

const PI;
PI = 3.14159265359;

when to use JavaScript const ?

‎موارد استفاده از كي وردconst جاوااسكريپت

‎هميشه با كي ورد‎const‎ متغيريكه مقدارش راميدانيد وتغيير نميكند، تعريف نمائيد .

‎كي ورد‎const‎ براي تعريف موارد زير استفاده ميشود .

‎اشياء وآرايه هاي ثابتConstant Objects and Arrays -‎

‎كي ورد‎const‎ كمي گمراه كننده است .آن مقدار ثابتي را تعريف نميكند، بلكه يك ‎ارجاعي ثابت را بيك مقدار تعريف مي نمايد .بهمين دليل نميتوان با آن:

‎آرايه هاي ثابتContant Arrays -‎

‎ميتوان عناصر يك آرايه ثابت را تغييرداد.

‎مثال ـ تغيير عناصر آرايه ثابت.

// 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");

--(go to editor for change code and run)

‎اما نمي توان يك آرايه ثابت را با انتساب مجدد معرفي كرد.

‎مثال ـ نمونه انتسا ب مجدد غير قابل قبول آرايه ثابت

const cars = ["Saab", "Volvo", "BMW"];

cars = ["Toyota", "Volvo", "Audi"];    // ERROR

--(go to editor for change code and run)

‎در مثال بالاهم براي كنترل قابل قبول بودن يا نبودن انتساب مجدد، از كي وردtry استفاده شده ‎است . اين كنترل مطابق زيراست.

<script>
try {
  const cars = ["Saab", "Volvo", "BMW"];
  cars = ["Toyota", "Volvo", "Audi"];
}
catch (err) {
  document.getElementById("demo").innerHTML = err;
}
</script >

‎دراين اسكريپت اگر بلوك‎try { }‎ اجرايش موفقيت آميز نباشد ، بلوكcatch (err){ } ‎اجرا ميشود كه خطاي عدم موفقيت را نشان ميدهد.

‎اشياء ثابتConstant Objects -‎

‎ميتوان ويژگي هاي شئ ثابت را تغيير داد.

‎مثال ـ تغيير ويژگي شئ ثابت

// 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";

--(go to editor for change code and run)

‎اما نميتوان انتساب مجددي براي شئ اعلام نمود .مشابه مثال زير كه امكان پذيرنيست.

const car = {type:"Fiat", model:"500", color:"white"};

car = {type:"Volvo", model:"EX60", color:"red"};    // ERROR

--(go to editor for change code and run)

‎اختلاف بين‎var , let , const

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

‎مزيت كي ورد هاي تعريف متغير:

‎موارد نا مطلوب كي وردهاي تعريف متغير:

‎پشتيباني مرورگرBrowser Support -‎

‎كي ورد هاي‎let , const‎ توسطInternal Explorer 11 و يا قبلي آن پشتيباني ‎نمي شوند.

‎جدول زير اولين نسخه هاي هستند كه مرور انهارا كامل پشتيباني ميكنند.

Chorome Edge Firefox Safari Opera
49.0 12.0 36.0 11.0 36.0
Mar 2016 Jul 2015 Jan 2015 Sep 2017 Mar 2016

‎ميدان بلوكيBlock Scope -‎

‎تعريف متغير با‎const‎ مشابه let داراي ميدان بلوكي است .

‎مثال ـ دراين مثال متغيرx تعريفي در بلوك مشابه x تعريفي خارج از بلوك نيست .آنها دو متغير ‎مستقل در بلوكهاي خود هستند.

const x = 10;
// Here x is 10

{
const x = 2;
// Here x is 2
}

// Here x is 10

--(go to editor for change code and run)

‎در مثال بالا اگر از نظر ترتيب دستوري در نظر گرفته شود، آخرين مقدار متغيرx برابر 2 بايد ‎باشد، اما براساس قانون بلوكي متغير مقدارآن10 ميباشد.وهمان طور كه گفته شد آنها دومتغيرند.

‎تعريف مجددRedeclaing -‎

‎تعريف مجدد متغير در جاوااسكريپت با كي ورد‎var‎ هر جاي برنامه مجازاست .

‎مثال ـ تعريف مجدد متغير باvar

var x = 2;     // Allowed
var x = 3;     // Allowed
x = 4;         // Allowed

--(go to editor for change code and run)

‎تعريف مجدد متغير موجود كه با كي ورد‎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
}

‎متغيربرافراشتهHoisting -‎

‎متغيريكه قبل از تعريف مورد استفاده قرار گيرد، آنرا برافراشته‎"Hoisted‎"‎گويند .

‎متغير برافراشته را ميتوان با‎var‎ هر جائي تعريف نمود .

‎مثال ـ نمونه زير درست است.

carName = "Volvo";
var carName;

--(go to editor for change code and run)

‎اگر متغيري را قبل از تعريف با‎const‎ استفاده نمائيم، با خطا برخورد ميكنيم.

‎مثال ـ نمونه بالا

alert (carName);
const carName = "Volvo";

--(go to editor for change code and run)


Previous >    <Next