[英]Difference between if (array.length > 0) and if (array?.length) in Javascript (Why is array.length > 0 falsey?)
我是一名超級綠色開發人員,上周開始了我的第一份工作。 我收到了另一位開發人員的評論,要求添加一個條件來檢查數組是否未定義並檢查數組是否實際上是一個數組。
最初我使用:
$: hasActiveCoupons = $cart.coupons && $cart.coupons.length > 0;
if (hasActiveCoupons && $cart.coupons.find((coupon) => coupon.id === couponCode)) {
...
}
但后來她向我指出$cart.coupons.length > 0會返回一個錯誤的值。 並通過寫作糾正它:
if ($cart.coupons?.length && $cart.coupons.find((coupon) => coupon.id === couponCode)) {
...
}
所以我想知道這是如何工作的? 我厭倦了閱讀其他一些問題,但我沒有完全掌握這個概念。
$cart.coupons.length > 0
如果coupons
為空,則返回錯誤值,但在這種情況下無需檢查長度。 此流程的較小方法如下:
$cart.coupons?.find(({ id }) => id === couponCode);
如果coupons
未定義,則返回undefined
。
如果沒有值滿足find
中的測試函數,則返回undefined
。
因此,無需單獨測試長度。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.