如何在未定义的对象上使用三元运算符

我正在尝试使用三元运算符有条件地设置变量,但出现以下错误:


无法设置未定义的属性“po_no”


let cart = JSON.parse(localStorage.getItem('shopping-cart'));


console.log(cart); // Evaluates to []


console.log(cart.length); // Evaluates to 0


this.order.po_no = (cart.length > 0) ? cart[0]['order']['po_no'] : "P.O. Number";

我想要一个“干净”的方法来设置这些变量,因为实际项目中有很多。


什么是有条件设置的好方法po_no?


为什么三元运算符cart[0]在cart.length > 0计算为时不跳过false?


慕姐8265434
浏览 259回答 3
3回答

Smart猫小萌

如果cart.length 评估为0,则一定不会出现错误“无法设置未定义的属性'po_no'”,但是为了安全起见,请尝试以下代码:let po_no = (cart.length > 0 && cart[0]['order']) ? cart[0]['order']['po_no'] : "P.O. Number";

绝地无双

在这种情况下,安全访问 po_no 将是,let po_no = (cart && cart[0] && cart[0].order && cart[0].order.po_no)             || "P.O. Number";注意:此访问还将忽略 undefined 或 falsy po_no

喵喔喔

我试图分配给与undefined订单键同名的对象,因此无法设置为this.order.po_no.this.order正确实例化后,问题就消失了。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript