Найти в Дзене

Помогите JavaScript понять, что на самом деле вы хотите сделать

Избегайте неопределённости. Например, если у вас есть значение obj, которое может быть undefined или объектом, рассмотрите возможность исключения неопределенности через явное условие: if (obj !== undefined) { // … } Тогда компилятору не придётся делать множество лишних проверок, как в случае, если вы напишите: if (obj) { // … } Что должен сделать компилятор в этом случае? Проверить, что obj не является пустой строкой, false, 0 или undefined. Всё это порождает лишние проверки в байткоде. Кажется, что достаточно понимания того, что перед нами объект, а объект всегда возвращает true на toBoolean. Но, к сожалению, в нашем динамически типизируемом языке компилятору придётся следить за всем циклом жизни переменной obj, чтобы убедиться, что на вход условия действительно пришёл объект. Дополнительная польза: когда вы будете читать свой код через год (или это будет делать кто-то другой), вам будет гораздо проще понять, что на самом деле проверяет ваше условие. Еще больше полезной информ

Избегайте неопределённости. Например, если у вас есть значение obj, которое может быть undefined или объектом, рассмотрите возможность исключения неопределенности через явное условие:

if (obj !== undefined) {

// …

}

Тогда компилятору не придётся делать множество лишних проверок, как в случае, если вы напишите:

if (obj) {

// …

}

Что должен сделать компилятор в этом случае? Проверить, что obj не является пустой строкой, false, 0 или undefined. Всё это порождает лишние проверки в байткоде. Кажется, что достаточно понимания того, что перед нами объект, а объект всегда возвращает true на toBoolean. Но, к сожалению, в нашем динамически типизируемом языке компилятору придётся следить за всем циклом жизни переменной obj, чтобы убедиться, что на вход условия действительно пришёл объект.

Первый вариант в среднем на 15% быстрее.
Первый вариант в среднем на 15% быстрее.

Дополнительная польза: когда вы будете читать свой код через год (или это будет делать кто-то другой), вам будет гораздо проще понять, что на самом деле проверяет ваше условие.

Еще больше полезной информации о веб разработке в телеграмм канале @za_frontend. Подпишись, чтобы прокачивать себя!