Автор оригинала: Brandon Wozniewicz.
Многие руководства в стиле JavaScript предлагают капитальные постоянные имена. Лично я редко вижу эту конвенцию, использованную там, где я думал, что это должно быть. Это было потому, что мое определение постоянной было немного. Я решил сделать немного копаться и стать немного более знакомым с этой конвенцией.
Как мы определим термин «постоянный»?
В программировании постоянная ей что-то не меняется.
Итак, JavaScript дает нам способ объявить значение, которое не может быть изменено? Прежде чем мы ответим на это, давайте посмотрим на корни настоящей Конвенции.
Конвенция о капитализации имеет корни в C
C является скомпилированный язык. Это означает, что другая программа преобразует весь ваш код в машинный код перед запуском.
JavaScript, с другой стороны, это интерпретированный язык. Переводчик читает ваш код, строка, как он работает.
Разница между компиляцией и интерпретацией играет роль в том, как мы объявляем постоянные значения в C.
В C, я могу объявить переменную, как это:
int;
Или, постоянная, как это:
#define toughinday 24.
Второй пример называется Символическая константа Отказ Символические константы могут быть последовательностью символов, числовой постоянной или строкой. Они также называют примитивными значениями. Примитивные значения в JavaScript представляют собой строки, цифры, логические, ноль, не определенные, символ (не путать с символическими константами) и Big Int.
Теперь давайте пересмотрим компиляцию.
Перед компиляцией существует фаза предварительной компиляции. Здесь предварительно компилятор заменяет все экземпляры символических констант с соответствующим значением. Компилятор никогда не знает, что программист написал ЧАСЫ ЛИНИДЕР
Отказ Только это видит номер 24
Отказ
Капитализация помогает программисту увидеть эти действительно постоянные ценности.
#define ers_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
и Пусть
Как способы создавать переменные с различными намерениями.
С помощью этих двух терминов вы можете подумать, что мы либо:
- Не нужно использовать что угодно, так как мы можем четко видеть, какие переменные предназначены для того же, что остаются прежними
- Мы должны использовать все, что мы объявляем с
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
Декларация. Нам нужно задать два вопроса, чтобы определить, является ли переменная постоянной:
- Это значение переменной примитивы?
- Намеряем ли мы сохранить имя переменной, указывающей на то же значение нашей программы?
Если ответ да к обоим, мы должны объявить переменную с Const
и может извлечь выгоду из названия.
Обратите внимание, что я сказал: «Мэй». Дух настоящей Конвенции происходит с разных языков, которые имели актуальные константы. JavaScript не. По крайней мере, в чистом смысле. Это может быть, почему вы видите эту конвенцию реже, чем можно ожидать. Airbnb имеет отличный раздел в своем руководстве в стиле с их взять здесь.
Ключ на вынос Чтобы распознать определение определения постоянной в JavaScript должна включать намерения программиста.
Кроме того, не каждая конвенция от одного языка имеет смысл на другом языке. Наконец, я могу только представить, что многие конвенции были использованы задолго до того, как IDes имели возможности, которые у них есть сегодня. Я убежден, что мой IDE с удовольствием рассказывает мне, что я не прав. Это происходит много.
Спасибо за чтение!
ворота
Следуй за мной на Твиттер
Примечания
- Вы можете удивить, почему я не использовал
PI
в любом из этих примеров. Сокращение, особенно двухбуквенные аббревиатуры – имеют тенденцию быть всегда капитализированными, либо всегда строчными по конвенции.