Falsy и truthy значения
Falsy значением называют такое значение, булевый эквивалент которого равняется false. Всего falsy значений в javascript несколько:
false0''пустая строкаundefinedнеопределенность, эквивалент "ничто"nullэквивалент "ничто"NaNспециальное числовое значение, означающее "не число"
Понимание того какое значение является 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});