因此,我遇到了一个错误,并认为它很有趣。一旦我坐下来思考了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/

10-11 12:38