选项链不适用于 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) {
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) {