7 JavaScript-трюков, которым вас не научат в школах программирования
Независимо от того, только что ли вы с обучились языку программирования js или вы уже опытный разработчик, который чувствует, что пишет одно и те же по 20 раз, этот список будет полезен по-разному.
Это не общие советы по типу «используйте map()
вместоforEach()
» — это скрытые, сохраняющие рассудок приемы, которые опытные разработчики используют, но редко объясняют.
1. Предотвращение чрезмерной вложенности условий с помощью оператора опциональной последовательности
Вместо этого:
if (user) {
if (user.settings) {
if (user.settings.darkMode) {
enableDarkMode();
}
}
}
делай так:
user?.settings?.darkMode && enableDarkMode();
или лучше даже так:
if (!user?.settings?.darkMode) return;
enableDarkMode();
Это снижает когнитивные издержки и делает вашу логику ясной и прямой.
2. Object.fromEntries() — замена Array.map() при работе с объектом
Вы все еще создаете новый объект из массива с помощью reduce? Тогда мы идем к вам.
const entries = [["name", "Asmodeos"], ["power", 9001]];
const obj = Object.fromEntries(entries);
Объедините это с Object.entries()
для мощных преобразований объектов:
const updated = Object.fromEntries(
Object.entries(obj).map(([k, v]) => [k, String(v).toUpperCase()])
);
3. Хитрые функции утверждения = более разумная отладка
Внесите разумность в хаотичную кодовую базу:
function assert(condition, message = "Ошибка утверждения") {
if (!condition) throw new Error(message);
}
Использование:
assert(user, "Необходимо определить пользователя");
Вы сможете быстрее отлаживать код и выявлять неверные предположения на ранних этапах.
4. Деструктурируйте как профессионал — используя значения по умолчанию
Это не просто чистый синтаксис — это избавление от ошибок.
function greet({ name = "Незнакомец", mood = "нейтрально" }) {
console.log(`Привет, ${name}, чувствуешь себя ${mood}?`);
}
Вызов greet({})
не приведет к ошибке или выводу undefined
.
5. Именованные функциональные выражения > анонимные функции
Сравните эту реализацию:
setTimeout(function () {
// Где я?
}, 1000);
И эту
setTimeout(function handleTimeout() {
// Легко найти ошибку
}, 1000);
Именованные функции обеспечат вам возможность отыскать в стеке , более простую отладку и лучшую документацию для вас через 6 месяцев.
6. Заблокируйте конфиги, чтобы избежать хаоса мутаций
При передаче объектов конфигурации блокируйте их:
const config = Object.freeze({
theme: "dark",
retries: 3
});
Теперь случайные перезаписи конфигурации будут вызывать ошибки в строгом режиме — настоящее спасение при работе в командах или с большой кодовой базы.
7. Спасите себя с помощью функций .name и .toString()
Нужно отладить неизвестные функции, переданные в систему?
function logFunctionInfo(fn) {
console.log(`Function name: ${fn.name}`);
console.log(`Source:\n${fn.toString()}`);
}
Полезно для динамического кода и отслеживания поведения в приложениях с большим количеством коллбэков.