متى تستغل ثوابت JavaScript الخاصة بك

تقترح العديد من أدلة أسلوب JavaScript كتابة الأسماء الثابتة بأحرف كبيرة. أنا شخصياً ، نادراً ما أرى هذه الاتفاقية تستخدم حيث اعتقدت أنه يجب أن تكون. كان هذا لأن تعريفي للثابت كان بعيد المنال قليلاً. قررت أن أقوم ببعض الحفر وأن أكون أكثر دراية بهذه الاتفاقية.

كيف نحدد مصطلح "ثابت"؟

في البرمجة ، ثابت هو شيء لا يتغير.

إنها قيمة لا يمكن للبرنامج تغييرها أثناء التنفيذ العادي.

إذن ، هل يمنحنا JavaScript طريقة للإعلان عن قيمة لا يمكن تغييرها؟ قبل أن نجيب على هذا ، دعونا نلقي نظرة على جذور هذه الاتفاقية.

اصطلاح الرسملة له جذور في C

لغة C لغة مترجمة. هذا يعني أن برنامجًا آخر يحول كل التعليمات البرمجية الخاصة بك إلى رمز الجهاز قبل تشغيله.

جافا سكريبت ، من ناحية أخرى ، هي لغة مفسرة. يقوم المترجم بقراءة التعليمات البرمجية الخاصة بك ، سطراً بسطر ، أثناء تشغيلها.

يلعب الفرق بين الترجمة والتفسير دورًا في كيفية إعلان القيم الثابتة في C.

في C ، يمكنني التصريح عن متغير مثل هذا:

int hoursInDay = 24;

أو ثابت مثل هذا:

#define hoursInDay 24

المثال الثاني يسمى ثابت رمزي . يمكن أن تكون الثوابت الرمزية سلسلة من الأحرف أو ثابتًا رقميًا أو سلسلة. وتسمى هذه أيضًا القيم الأولية. القيم الأولية في JavaScript هي سلاسل ، أرقام ، منطقية ، فارغة ، غير محددة ، رمز (يجب عدم الخلط بينه وبين الثوابت الرمزية) و int.

الآن ، دعنا نعيد النظر في التجميع.

قبل التجميع ، هناك مرحلة ما قبل التجميع. هنا ، يستبدل المترجم المسبق جميع حالات الثوابت الرمزية بالقيمة الخاصة بها. المترجم لا يعرف أبدا أن المبرمج كتب hoursInDay. يرى فقط الرقم 24.

تساعد الكتابة بالأحرف الكبيرة المبرمج على رؤية هذه القيم الثابتة حقًا.

#define HOURS_IN_DAY 24

تختلف ثوابت JavaScript عن الثوابت الرمزية

قبل ES6 ، قمنا بتخزين معظم القيم في المتغيرات ، حتى تلك القيم التي تريد أن تظل ثابتة.

ساعدتنا الكتابة بالأحرف الكبيرة على رؤية القيم التي أردنا أن تظل ثابتة.

var HOURS_IN_DAY = 24; var hoursRemaining = currentHour - HOURS_IN_DAY; var MY_NAME = 'Brandon'; MY_NAME = ... // oops don't want to do this.

قدم ES6 الإعلان const الذي ليس "ثابتًا" في أنقى معانيه.

وأضاف ES6 شروط constو letعن سبل إنشاء متغيرات مع نوايا مختلفة.

مع هذين المصطلحين ، قد تعتقد أننا إما:

  1. لا تحتاج إلى كتابة أي شيء بأحرف كبيرة نظرًا لأنه يمكننا أن نرى بوضوح المتغيرات التي من المفترض أن تظل كما هي ، أو
  2. يجب أن نستفيد من كل شيء نعلن عنه const.

حسب التعريف ، constيُنشئ ثابتًا يكون مرجعًا للقراءة فقط لقيمة. هذا لا يعني أن القيمة التي تحملها غير قابلة للتغيير. يقول فقط أنه لا يمكن إعادة تعيين معرف المتغير.

بمعنى آخر ، constيمكن أن تتغير بعض المراجع.

const firstPerson = { favoriteNumber: 10, }; const secondPerson = firstPerson; console.log(secondPerson.favoriteNumber); //10 firstPerson.favoriteNumber +=1; console.log(secondPerson.favoriteNumber); //11

يوضح المثال أعلاه أن التصريح constلا يضمن أن المتغير غير قابل للتغيير.

constيمنعنا فقط من محاولة إعادة تعيين اسم المتغير. إنه لا يمنع خاصية الكائن من التغيير. تذكر: الكائنات تمريري مرجعي.

// "TypeError: Assignment to constant variable."secondPerson = 'something else'; const secondPerson = 'Me' secondPerson = 'something else';

لذلك ، بالنسبة إلى JavaScript ، علينا أن نتجاوز مجرد البحث عن constتصريح. نحتاج إلى طرح سؤالين لتحديد ما إذا كان المتغير ثابتًا:

  1. هل قيمة المتغير بدائية؟
  2. هل نعتزم إبقاء اسم المتغير يشير إلى نفس القيمة في جميع أنحاء برنامجنا؟

إذا كانت الإجابة بنعم لكليهما ، فيجب أن نعلن عن المتغير constوقد نكتب الاسم بأحرف كبيرة.

لاحظ أنني قلت "يجوز". تأتي روح هذه الاتفاقية من لغات مختلفة لها ثوابت فعلية. جافا سكريبت لا تفعل ذلك. على الأقل في أنقى معانيها. قد يكون هذا هو سبب رؤيتك لهذه الاتفاقية في كثير من الأحيان أقل مما تتوقع. يحتوي Airbnb على قسم رائع في دليل الأسلوب الخاص بهم مع أخذهم هنا.

و الوجبات الجاهزة رئيسية هي الاعتراف تعريف ثابت في جافا سكريبت يجب أن يتضمن نوايا مبرمج.

بالإضافة إلى ذلك ، ليست كل اصطلاحات من لغة واحدة منطقية في لغة مختلفة. أخيرًا ، لا يمكنني إلا أن أتخيل أن العديد من الاتفاقيات قد تم استخدامها قبل وقت طويل من امتلاك IDE للقدرات التي تمتلكها اليوم. أنا مقتنع بأن IDE الخاص بي يسعدني بإخباري بأنني مخطئ. يحدث كثيرا.

شكرا للقراءة!

ووز

تابعني على تويتر.

ملاحظات

  • قد تتساءل لماذا لم أستخدم PIفي أي من هذه الأمثلة. تميل الاختصارات - خاصة الاختصارات المكونة من حرفين - إلى أن تكون دائمًا كبيرة أو صغيرة حسب الاصطلاح.