我的情况很有趣,想知道是否有人知道原因。
我的代码中有此语句
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