المتغيرات المعلنة بواسطة Let و const صالحة فقط داخل كتلة الكود.
{دع a = 10 ؛ var b = 1 ؛} a // referenerRor: a غير محدد.لا ترويج متغير
يجب استخدام المتغيرات بعد الإعلان ، وإلا سيتم الإبلاغ عن خطأ.
var tmp = 123 ؛ if (true) {tmp = 'abc' ؛ // ReferenceRrorlet TMP ؛}لا يُسمح بالبيانات المتكررة
// error function () {let a = 10 ؛ var a = 1 ؛}نطاق مستوى الكتلة
الدالة f () {console.log ('أنا خارج!') ؛ } (function () {if (false) {// كرر دالة الوظيفة f () {console.log ('أنا في الداخل!) ؛}} f () ؛} ()) ؛ // أنا في الداخل! ES5 وظيفة الترويج // أنا في الخارج! ES6 نطاق مستوى كتلةقيادة كونست
إعلان ثابت القراءة فقط. بمجرد إعلانها ، لا يمكن تغيير قيمة الثابت.
بمجرد الإعلان عن المتغير ، يجب تهيئته على الفور ولا يمكن تركه ليتم تعيينه لاحقًا.
لا تنتمي المتغيرات العالمية التي تم إعلانها عن طريق Let Let Command و Const و Class Command ، إلى خصائص الكائن العالمي.
var a = 1 ؛ // إذا في بيئة الاستبدال في العقدة ، يمكن كتابتها على أنها global.a // أو باستخدام طريقة عامة ، يمكن كتابتها على أنها.
بعد ذلك ، سأقدم لك الأمر const من ES6 لك بشكل منفصل
لم يكن لدى JS ، التي كانت تتمحور دائمًا على ECMA ، مفهوم الثوابت ، وقد تعويض ES6 لهذا العيب ؛
const foo = 'foo' ؛ foo = 'bar' ؛ // typeerror: تعيين متغير ثابت.
يعلن المثال أعلاه ثابتًا من النوع الأساسي. إذا حاولت تعديل القيمة الأولية ، فسيتم الإبلاغ عن خطأ ؛ إذا كانت قيمة نوع المرجع ، فهي تنطبق أيضًا ، ولكن يجب الانتباه إلى شيء واحد ، إعطاء مثال:
const foo = [] ؛ foo = [1] ؛ // التخصيص إلى متغير ثابت.
خطأ عادي ، لا مشكلة ، انظر مرة أخرى:
const foo = [1،2،3] ؛ foo [1] = 4 ؛ console.log (foo) // [1 ، 4 ، 3]
لماذا لا يوجد خطأ في هذا؟ وهل يمكن تعديلها بنجاح؟ الفرق بين هذين المثالين هو أن الأول قد غير المحتوى المقابل للمؤشر (يجب أن يكون على دراية بنوع مرجع JS) وأن الأخير لم يغير بعد الإشارة ولكن محتوى كائن التأشير قد تغير. بالنسبة لـ Foo ، أنا مجرد مؤشر مسؤول عن الإشارة إلى الكائن المقابل. بالنسبة لمحتوى الكائن ، لا يهمني عملي ، حتى أتمكن من تعديله ؛ إذا كنت لا أرغب في تغيير المحتوى ، يمكنني استخدام طريقة أخرى ؛
const foo = object.freeze ([1،2،3]) ؛ foo [1] = 4 ؛ console.log (foo) // [1 ، 2 ، 3]
بهذه الطريقة لا داعي للقلق بشأن التعديل ؛