繁体   English   中英

在三元数组中访问对象的属性

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM