判断null与[]时 可选链式操作符? 的妙用

今天有个需求要判断只有变量a不为null且不为[]时,变量b才为true

问题描述

  • 一开始以为接口返回的变量a为null/非空数组,而变量b取决于变量a是否为null,即a = b != null
  • 结果测试提了个bug说 变量a还有[]的情况 ,和null一样处理,即只有a为非空数组时b才为true
  • 重点:如果通过a.length来判断就有a为null的情况,null这object可没长度

解决方法

  • a?.length来判断。只有a存在时才会走后面的length,完美避开a为null还去找长度而报错的情况
  • 如果a不存在(undefined)/为null,则a?.length返回 undefined
  • a?.length其实就相当于a && a.length

可选链式操作符?

  • 可参考MDN
,