Идиоматический способ проверки ненулевой принадлежности
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)