Можно ли сократить запись проверки на null и undefined
Интересно, можно ли сократить данную запись? Чтобы this.value !== ещё раз не повторялся?
this.value !== null && this.value !== undefined
Ответы (1 шт):
Автор решения: SwaD
→ Ссылка
Можно использовать оператор нулевого слияния ??
ВАЖНО! Пример ниже будет работать правильно, только в том случае, когда
this.valueне может быть пустой строкой, нулем или false. Во всех остальных случаях оператор нулевого слияния можно использовать в конструкцииif
function test() {
console.log(this.value)
if (this.value ?? 0) {
console.log('new', false)
} else {
console.log('new', true)
}
if (this.value !== null && this.value !== undefined) {
console.log('old', false)
} else {
console.log('old', true)
}
}
test.call({value: undefined})
test.call({value: null})
test.call({value: 1})
test.call({value: '1'})
test.call({value: true})
console.log('Не верный результат:')
test.call({value: ''})
test.call({value: 0})
test.call({value: false})
Оператор нулевого слияния проверяет, если слева значение null или undefined то возвращается то что справа, иначе, то что слева.
Если this.value будет 0, к примеру, то:
Boolean(this.value ?? 0) вернет false, т.к. 0 превращается в false
С пустой строкой и false аналогично