1. Проверка нескольких условий для строки
Часто приходится проверять, равна ли строка (string) одному из нескольких значений, и это очень быстро надоедает. К счастью, в JavaScript есть встроенный метод, который поможет выполнить эту задачу.
// Запись без сокращения
const isVowel = (letter) => {
if (
letter === "a" ||
letter === "e" ||
letter === "i" ||
letter === "o" ||
letter === "u"
) {
return true;
}
return false;
};
// Запись с сокращением
const isVowel = (letter) =>
["a", "e", "i", "o", "u"].includes(letter);
2. Циклы For-of и For-in
Циклы For-of и For-in — это отличный способ итерации по массивам и объектам без необходимости вручную отслеживать индексы ключей объектов.
For-of:
const arr = [1, 2, 3, 4, 5];
// Запись без сокращения
for (let i = 0; i < arr.length; i++) {
const element = arr[i];
// ...
}
// Запись с сокращением
for (const element of arr) {
// ...
}
For-in:
const obj = {
a: 1,
b: 2,
c: 3,
};
// Запись без сокращения
const keys = Object.keys(obj);
for (let i = 0; i < keys.length; i++) {
const key = keys[i];
const value = obj[key];
// ...
}
// Запись с сокращением
for (const key in obj) {
const value = obj[key];
// ...
}
3. Проверка достоверности данных
Чтобы проверить, является ли переменная null, undefined, 0, false, NaN или пустой строкой string, воспользуйтесь оператором логического отрицания (!). Он протестирует их все сразу, и вам не придется писать несколько условий. Этот способ позволяет легко и быстро узнать, содержит ли переменная допустимые данные.
// Запись без сокращения
const isFalsey = (value) => {
if (
value === null ||
value === undefined ||
value === 0 ||
value === false ||
value === NaN ||
value === ""
) {
return true;
}
return false;
};
// Запись с сокращением
const isFalsey = (value) => !value;
4. Тернарный оператор
Будучи разработчиком JavaScript, вы наверняка сталкивались с ternary operator. Это отличный способ написания кратких операторов if-else. Однако вы также можете использовать тернарный оператор для написания лаконичного кода и даже создавать цепочки для проверки нескольких условий.
// Запись без сокращения
let info;
if (value < minValue) {
info = "Value is too small";
} else if (value > maxValue) {
info = "Value is too large";
} else {
info = "Value is in range";
}
// Запись с сокращением
const info =
value < minValue
? "Value is too small"
: value > maxValue ? "Value is too large" : "Value is in range";
5. Вызовы функций
С помощью ternary operator также можно определить, какую функцию следует вызвать, исходя из условий.
Примечание: call signature функций должна быть одинаковой, иначе вы рискуете столкнуться с ошибкой.
function f1() {
// ...
}
function f2() {
// ...
}
// Запись без сокращения
if (condition) {
f1();
} else {
f2();
}
// Запись с сокращением
(condition ? f1 : f2)();
6. Сокращение switch-конструкций
Длинные switch-конструкции зачастую можно оптимизировать, используя объект с ключами в качестве switch-операторов и значениями в качестве возвращаемых значений.
const dayNumber = new Date().getDay();
// Запись без сокращения
let day;
switch (dayNumber) {
case 0:
day = "Sunday";
break;
case 1:
day = "Monday";
break;
case 2:
day = "Tuesday";
break;
case 3:
day = "Wednesday";
break;
case 4:
day = "Thursday";
break;
case 5:
day = "Friday";
break;
case 6:
day = "Saturday";
}
// Запись с сокращением
const days = {
0: "Sunday",
1: "Monday",
2: "Tuesday",
3: "Wednesday",
4: "Thursday",
5: "Friday",
6: "Saturday",
};
const day = days[dayNumber];
7. Резервные значения
Оператор || может установить резервное значение (fallback value) для переменной.
// Запись без сокращения
let name;
if (user?.name) {
name = user.name;
} else {
name = "Anonymous";
}
// Запись с сокращением
const name = user?.name || "Anonymous";
Читайте также:
- Схватка “рекурсия против циклов” на арене JavaScript
- Создаем первый «Astroвной» проект
- Хитрости объектно-ориентированного программирования. Часть 6 SLAP для функций
Читайте нас в Telegram, VK и Дзен
Перевод статьи Tapajyoti Bose, 7 Shorthand Optimization Tricks every JavaScript Developer Should Know 😎





