Можно ли сократить запись проверки на 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 аналогично

→ Ссылка