04.09.2023 в 13:56
Алексей Устинов
Константы JavaScript
В JavaScript большинству разработчиков хорошо известны const
. Он объявляет локальные переменные с областью действия блока, что означает, что значение константы не может быть изменено путем переназначения с использованием оператора присваивания, за исключением Object и Array.
Однако правильно ли и четко вы определили константу?
Соглашение об именовании
В соответствии с правилом именования Airbnb экспортируемые константы должны соответствовать формату SCREAMING_SNAKE_CASE
, но не для констант внутри файла.
// Within a file
const helloWorldText = "Hello, World!"
// Exported constants
export const HELLO_WORLD_TEXT = "Hello, World!"
Примеры
Ниже приведены примеры всех экспортируемых констант типов данных:
// Number
const PI = 3.14159;
// String
const GREETING = "Hello, World!";
// Boolean
const IS_ACTIVE = true;
// Array
const COLORS = ["red", "green", "blue"];
// Object
const PERSON = {
name: "John",
age: 30
};
// RegExp
const EMAIL_PATTERN = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/;
// Null
const NO_VALUE = null;
// Undefined
const UNDEFINED_VALUE = undefined;
// Symbol
const UNIQUE_KEY = Symbol("unique");
Другое использование
Помимо определения типов данных, const
широко используется и в других контекстах.
1. Деструктуризация массивов
const [a] = ["a"];
2. Деструктуризация массивов со значениями по умолчанию
const [a = 0] = [];
3. Деструктуризация объектов
const {а} = {а: "значение"};
4. Деструктуризация объектов со значениями по умолчанию
const { a = "default" } = {};
5. Глобальные константы
// Browser environment
window.GLOBAL_CONSTANT = "This is a global constant";
// Node.js environment
global.GLOBAL_CONSTANT = "This is a global constant";
6. Переменные среды (Node.js)
const PORT = process.env.PORT || 3000;
7. Литералы шаблонов с константами
const name = "John";
const greeting = `Hello, ${name}!`;
8. Остаточные параметры в функциях
function sum(...numbers) {
const result = numbers.reduce((acc, num) => acc + num, 0);
return result;
}
9. Параметры функции деструктуризации
function printUser({ name, age }) {
console.log(`Name: ${name}, Age: ${age}`);
}
10. Класс константы
class Circle {
constructor(radius) {
this.radius = radius;
}
getArea() {
const PI = 3.14159;
return PI * this.radius * this.radius;
}
}