Falsy и truthy значения

Falsy значением называют такое значение, булевый эквивалент которого равняется false. Всего falsy значений в javascript несколько:

Понимание того какое значение является falsy необходимо для эффективного использования ветвления и логических операторов.

Обычно falsy значения не приводят к булевому типу, при использовании в ветвлении

var user = {
    name: 'Sergey',
    age: 25
};
if (user.name) { // Проверка на наличие свойства
    // ..
}
if (user.secondName) { // Проверка на наличие свойства
    // ...
}

Falsy значения встречаются при работе с аргументами функций. Функция может быть объявлена и вызвана с любым количеством аргументов, поэтому необходимо уметь отличить функцию вызванную с аргументом и без аргумента. В 90% случаев значение аргумента функции не может быть falsy значения. Значит для проверки наличия переданного аргумента достаточно проверить на наличие falsy значения в аргументе функции.

// Подразумевается, что у функции может быть аргумент, а может и не быть. Если аргумент есть - его тип - объект (значит truthy значение)
function mayHaveOrHaveNotArguments(options) {
    if (!options) {
        // Случай, когда функция вызвана без аргументов
        return 'No args'
    } else {
        // Аргумент функции передан при вызове
        return 'Some args'
    }
}
mayHaveOrHaveNotArguments(); // вызов функции без аргументов, функция возвращает 'No args'
// вызов функции с аргументом, функция возвращает `Some args`
mayHaveOrHaveNotArguments({show: true});