工具介绍
Airbnb JavaScript Style Guide()
*В основном разумный подход к JavaScript*
Примечание: в этом руководстве предполагается, что вы используете Babel, и требуется, чтобы вы использовали babel-preset-airbnb или эквивалент. Он также предполагает, что вы устанавливаете шимы / полифиллы в своем приложении с помощью airbnb-браузеров или эквивалента.
Это руководство доступно и на других языках. См. перевод
Другие руководства по стилю
- ES5 (Deprecated)
- Реагировать
- CSS-in-JavaScript
CSS & Sass
- Руби.
Таблица содержимого
1. Типы
1. Ссылки
1. Объекты
1. Схемы
1. Разрушение
1. Струны
1. Функции
1. Функции стрелы
1.Классы и конструкторы
1. Модули
1. Итераторы и генераторы
1.Свойства
1. Переменные
1. Подъем
1.Сравнение операторов и равенство
1. Блоки
1. Контрольные заявления
1. Комментарии
1.Белое пространство
1. запятые
1.Семихолон
1.Тип кастинга и принуждения
1.Названия конвенций
1. Аксессуары
1.События
1. jQuery
1. ECMAScript 5 Совместимость
1. ECMAScript 6+ (ES 2015+) Стили
1 Стандартная библиотека
1. Испытания
1.Исполнение
1. Ресурсы
1.В дикой природе
1. Перевод.
1.Руководство по стилю JavaScript
1.Чат с нами о JavaScript
1. Вкладчики
1.Лицензия
1. Поправки
Типы
<a name="types--primitives"></a><a name="1.1"></a>
- 1.1 **Примитивы**: Когда вы получаете доступ к примитивному типу, вы работаете непосредственно над его ценностью.
- "струна"
- "число"
- "булин"
- "нуль"
- "неопределенный"
- "символ"
- "Биггинт"
<br />
Символы и BigInts не могут быть точно полифильными, поэтому они не должны использоваться при нацеливании на браузеры / среды, которые не поддерживают их изначально.
<a name="types--complex"></a><a name="1.2"></a>
- 1.2 **Комплекс**: Когда вы получаете доступ к сложному типу, вы работаете над ссылкой на его значение.
- "объект"
- "Ура".
- "функция"
<br />
** Возвращение к вершине**
Ссылки
<a name="references--prefer-const"></a><a name="2.1"></a>
2.1 Используйте «const» для всех ваших ссылок; избегайте использования «var». eslint: "prefer-const", "no-const-assign"
Почему? Это гарантирует, что вы не сможете переназначить свои ссылки, что может привести к ошибкам и трудно понять код.
<a name="references--disallow-var"></a><a name="2.2"></a>
- 2.2 Если вы должны переназначить ссылки, используйте «let» вместо «var». Эслинт: «no-var»
Почему? «Let» — это блок-скап, а не функция-скап, как «var».
<a name="references--block-scope"></a><a name="2.3"></a>
- 2.3 Обратите внимание, что как "let", так и "const" блок-скопированы, тогда как "var" - функционально-скопирован.
В приведенном выше коде вы можете видеть, что ссылки на «a» и «b» будут создавать референтную ошибку, в то время как «c» содержит номер. Это связано с тем, что "a" и "b" являются блоками, а "c" относится к содержащим функциям.
** Возвращение к вершине**
Объекты
<a name="objects--no-new"></a><a name="3.1"></a>
- 3.1 Используйте буквальный синтаксис для создания объектов. Эслинт: «Нет нового объекта»
<a name="es6-computed-properties"></a><a name="3.4"></a>
- 3.2 Используйте вычисленные имена свойств при создании объектов с динамическими именами свойств.
Почему? Они позволяют определить все свойства объекта в одном месте.
<a name="es6-object-shorthand"></a><a name="3.5></a>
- 3.3 Используйте стенограмму объектного метода. Эслинт: «объект-коротышка»
<a name="es6-object-concise"></a><a name="3.6></a>
- 3.4 Используйте сокращение стоимости имущества. Эслинт: «объект-коротышка»
Почему? Он короче и описателен.
<a name="objects--grouped-shorthand"></a><a name="3.7"></a>
3.5 Сгруппируйте свои свойства в начале декларации объекта.
Почему? Легче сказать, какие свойства используют сокращение.
<a name="objects--quoted-props"></a><a name="3.8"></a>
- 3.6 Свойства, которые являются недействительными идентификаторами. Эслинт: «quote-props»
Почему? В целом мы считаем, что читать субъективно легче. Он улучшает подсветку синтаксиса, а также более легко оптимизируется многими двигателями JS.
<a name="объекты-прототипы-встроенные"></a>
- 3.7 Не называйте методы «Object.prototype», такие как «hasOwnProperty», «propertyIsEnumerable» и «isPrototypeOf». Эслинт: «непрототипные встроенные»
Почему? Эти методы могут быть теневыми по свойствам на рассматриваемом объекте - рассмотрите '{имеет Собственность: ложное }' - или, объект может быть нулевым объектом ('Object.create(null)'). В современных браузерах, поддерживающих ES2022, или с полифиллом, таким как <https:/