为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕姐8265434 2021-07-02 13:11:48
我正在尝试使用三元运算符有条件地设置变量,但出现以下错误:无法设置未定义的属性“po_no”let cart = JSON.parse(localStorage.getItem('shopping-cart'));console.log(cart); // Evaluates to []console.log(cart.length); // Evaluates to 0this.order.po_no = (cart.length > 0) ? cart[0]['order']['po_no'] : "P.O. Number";我想要一个“干净”的方法来设置这些变量,因为实际项目中有很多。什么是有条件设置的好方法po_no?为什么三元运算符cart[0]在cart.length > 0计算为时不跳过false?
查看完整描述

3 回答

?
Smart猫小萌

TA贡献1911条经验 获得超7个赞

如果cart.length 评估为0,则一定不会出现错误“无法设置未定义的属性'po_no'”,但是为了安全起见,请尝试以下代码:

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



查看完整回答
反对 回复 2021-07-08
?
绝地无双

TA贡献1946条经验 获得超4个赞

在这种情况下,安全访问 po_no 将是,


let po_no = (cart && cart[0] && cart[0].order && cart[0].order.po_no) 

            || "P.O. Number";

注意:此访问还将忽略 undefined 或 falsy po_no


查看完整回答
反对 回复 2021-07-08
?
喵喔喔

TA贡献1735条经验 获得超5个赞

我试图分配给与undefined订单键同名的对象,因此无法设置为this.order.po_no.

this.order正确实例化后,问题就消失了。


查看完整回答
反对 回复 2021-07-08
  • 3 回答
  • 0 关注
  • 258 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信