Использовать их или не использовать их …
Запястья в JavaScript разделите сообщество. Некоторые предпочитают использовать их всегда, независимо от того, что. Другие любят избегать их.
Я избираю опрос в Twitter для тестирования воды, и я нашел много сторонников полукол:
После использования запятых в течение многих лет, осенью 2017 года я решил попытаться избежать их, когда смогу. Я настроил Красивее Для автоматического удаления запятой из моего кода, если не было конкретной конструкции кода, которая требует их.
Теперь я нахожу естественным, чтобы избежать точков, и я думаю, что код выглядит лучше и является чище читающим.
Это все возможно, потому что JavaScript не строго требует запятых. Когда есть место, где требуется точка запятой, он добавляет его за кулисами.
Это называется Автоматическая запястья вставки Отказ
Важно знать правила, которые властные запятые. Это позволит вам избежать записи кода, который будет генерировать ошибки, прежде чем она не ведет себя так, как вы ожидаете.
Правила JavaScript Автоматическая запястья вставки
Парсер JavaScript автоматически добавляет точку запятой, когда во время анализа исходного кода он находит эти конкретные ситуации:
- Когда следующая строка начинается с кода, который нарушает текущий (код может появиться на нескольких строках)
- Когда следующая строка начинается с
}Закрытие текущего блока - Когда достигнут конец файла исходного кода
- Когда есть
вернутьЗаявление о своей линии - Когда есть
ПерерывЗаявление о своей линии - Когда есть
броситьЗаявление о своей линии - Когда есть
ПродолжитьЗаявление о своей линии
Примеры кода, который не делает то, что думаешь
Основываясь на этих правилах, вот несколько примеров.
Возьми это:
const hey = 'hey'const you = 'hey'const heyYou = hey + ' ' + you['h', 'e', 'y'].forEach((letter) => console.log(letter))
Вы получите ошибку Uncaught IseError: не может прочитать свойство «Foreach» undefined Потому что на основе правила 1 JavaScript пытается интерпретировать код как
const hey = 'hey';const you = 'hey';const heyYou = hey + ' ' + you['h', 'e', 'y'].forEach((letter) => console.log(letter))
Этот кусок кода:
(1 + 2).toString()
Отпечатки "3" Отказ
const a = 1const b = 2const c = a + b(a + b).toString()
Вместо этого поднимает Типерре: B не функция Исключение, потому что JavaScript пытается интерпретировать его как
const a = 1 const b = 2 const c = a + b(a + b).toString()
Еще один пример на основе правила 4:
(() => { return { color: 'white' }})()Вы ожидаете, что возвращаемая стоимость этой немедленно вызываемой функции является объектом, который содержит цвет Собственность, но это не так. Вместо этого это undefined , потому что JavaScript вставляет точку запятой после вернуть Отказ
Вместо этого вы должны поставить открывающуюся кронштейн сразу после вернуть :
(() => { return { color: 'white' }})()Вы бы подумали, что этот код показывает «0» в оповещении:
1 + 1 -1 + 1 === 0 ? alert(0) : alert(2)
Но он показывает 2 вместо этого, потому что JavaScript (за правило 1) интерпретирует его как:
1 + 1 -1 + 1 === 0 ? alert(0) : alert(2)
Заключение
Будьте осторожны – некоторые люди очень мнения о точках. Мне все равно, честно. Инструмент дает нам возможность не использовать его, поэтому мы можем избежать полуконов, если мы хотим.
Я не предлагаю ничего с одной стороны или другой. Просто сделайте свое собственное решение на основе того, что работает для вас.
Независимо от того, нам просто нужно заплатить немного внимания, даже если большую часть времени эти основные сценарии никогда не появляются в вашем коде.
Выберите некоторые правила:
- Будьте осторожны с
вернутьзаявления. Если вы что-то вернетесь, добавьте его на ту же строку, что и возврат (то же самое дляBreak,Бросок,Продолжить) - Никогда не запускайте строку с круглыми скобками, так как они могут быть объединены с предыдущей строкой, чтобы сформировать вызов функции или Ссылка на элемент массива
И в конечном итоге всегда проверяйте свой код, чтобы убедиться, что он делает то, что вы хотите.
Первоначально опубликовано flaviocopes.com .
Оригинал: “https://www.freecodecamp.org/news/lets-talk-about-semicolons-in-javascript-f1fe08ab4e53/”