选项链不适用于 array.length === x

Optioning chaining not working for array.length === x

let products;

if (products?.length !== 0) {
  console.log('true')
}

let products;

if (products && products.length !== 0) {
  console.log('true')
}

如果没有产品数组,示例 1 仍将 运行 if 语句。可选的链接不应该检查产品是否存在,然后检查长度,最后检查长度为 0 吗?

例子。 2 不会 运行 如果产品不存在。

可选链接不优先于比较。这个

if (products?.length !== 0) {

if ((products?.length) !== 0) {

它评估链,然后将结果与 0 进行比较。如果链的末尾有值,则会进行比较。如果链由于无效而失败,它将计算为 undefined,并且 that 将与 0.

进行比较
if ((undefined) !== 0) {

永远正确。

如果 products 存在且不为空,您希望块 运行,请使用

if (products?.length) {