我的情况很有趣,想知道是否有人知道原因。
我的代码中有此语句

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属性,则不会抛出该异常,而只会产生undefined。您可能还需要在条件下测试k.rewards.length > 0

(k.rewards && k.rewards.length ? k.rewards[0] : k).value

10-02 16:02