因此,我遇到了一个错误,并认为它很有趣。一旦我坐下来思考了5秒钟,这是有道理的,但好奇的是将来人们将如何克服它。
因此,我在obj中设置了一些哈希。 (来自较大obj的代码段)。
someBigObj : {
someObj : {
item1 : 0
item2: 1
item4: 2
item3: 3
}
}
因此,我以这种方式进行设置,因为我需要引用一个数组位置,该位置对应于与那些项目关联的数据。
因此,如果我碰巧引用了item1,请看我们得到了什么。
var varReference = someBigObj.someObj['item1'] || false;
// which is equivalent to
var varReference = 0 || false;
看看那里发生了什么?该引用为0。因此varReference始终为false。在这种情况下,我实际上需要数字0,因为我需要访问数组元素。我认为对我来说奇怪,因为它不是字符串,而是整数。我仍如何使用||的后备为false,但实际上将数字0视为有效值。
注意:我知道我可以显式测试等。只是好奇是否有解决我的解决方案的快捷方式或本机js(我不知道)。想像的东西会工作,但没有。
Number(0) || false
补充说明:我结束了不加| false,即使没有正确引用也没有错误。因此,这实际上并不重要,但是我总是喜欢有备用功能,因此这就是我好奇的原因。
最佳答案
与其尝试查看属性中的值(及其虚假性,有时会使您失败),还应该使用 in
operator检查该属性是否存在于对象中:
var varReference = 'item1' in someBigObj.someObj
? someBigObj.someObj['item1']
: false;
可以简化为
var varReference = 'item1' in someBigObj.someObj && someBigObj.someObj['item1'];
关于javascript - 好奇其他人将如何为此创建后备:som var = number 0 ||假?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19732437/