Идиоматический способ проверки ненулевой принадлежности

JavaScript теперь предоставляет ?? а также ?. для выполнения таких действий, как поиск первого ненулевого выражения или разыменование объекта, если он не равен нулю.

Есть ли хороший идиоматический способ просто проверить ненулевое значение? Например, если я хочу позвонить только onChange()обработчик, если мое значение не равно нулю. Это:

      someVal && onChange(someVal)

Очевидно, это неверно, потому что это не сработает для ложных, но ненулевых значений (особенно 0 а также '').

2 ответа

Решение

Идиоматический способ - это if заявление со сравнением с null:

      if (someVal != null) onChange(someVal)
      if (someVal != null) {
    onChange(someVal)
}

Для этого нет оператора. Некоторые люди выразили желание , как в течение пристройки к оператору трубопровода предложениям , что позволит вам написать вам что - то вроде someVal ?> onChange;, но я не знаю ни одной реализации этой идеи.

      if (someVal !== null) {

}

наверное то, что ты хочешь

попробуйте их оба в консоли, чтобы увидеть, как они немного по-разному относятся к undefined

      > null != undefined
false
> null !== undefined
true

так что если вы считаете undefined как "не нуль", вы хотите !==

с другой стороны, если хочешь false, 0, '', null чтобы все не считались ненулевым .... тогда вы просто хотите

      if (!someVal) {
  
}

который делает то же самое, что и ваш && в вашем примере


если вы хотите, чтобы он выглядел как ваш пример, но просто проверьте на ноль, вы также можете сделать это

      someVal !== null && onChange(someVal)
Другие вопросы по тегам