[英]Accessing property on object in an array in a ternary
我的情况很有趣,想知道是否有人知道原因。 我的代码中有此语句
var score = (typeof k.rewards !== 'undefined') ? k.rewards[0].value : k.value;
这将引发在数组内(在三元组的真面)未定义的值错误。 但是,我知道值在那里,这样就可以正常打印了。
var score = (typeof k.rewards !== 'undefined') ? k.rewards : k.value;
Console.log(score[0].value);
有谁知道为什么当我尝试直接在三进制中访问它时,它会是未定义的?
好吧,你的第一个表达式等于
(typeof k.rewards !== 'undefined' ? k.rewards[0] : k).value
而你的第二个相当于
(typeof k.rewards !== 'undefined' ? k.rewards : k.value)[0].value
希望您现在能看到区别...
这将引发在数组内(在三元组的真面)未定义的值错误。
不完全是。 当k.rewards[0]
undefined
,您的第一个确实抛出了,但是您仍然尝试访问其.value
属性。 如果k.rewards[0]
存在,但不具有.value
属性,则不会抛出该k.rewards[0]
,而只会产生undefined
。 您可能还需要在条件下测试k.rewards.length > 0
:
(k.rewards && k.rewards.length ? k.rewards[0] : k).value
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.