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