好奇其他人将如何为此创建后备:som var = 数字 0 ||假
Curious how others would create a fallback for this: som var = number 0 || false?
所以,我遇到了一个错误,并认为它很有趣。一旦我坐下来思考了 5 秒钟,这是有道理的,但很好奇将来如何克服它。
所以,我在 obj 中设置了一些哈希。 (来自较大 obj 的代码片段)。
someBigObj : {
someObj : {
item1 : 0
item2: 1
item4: 2
item3: 3
}
}
因此,我以这种方式设置它,因为我需要引用与这些项目关联的数据对应的 Array 位置。
所以,如果我碰巧引用了item1 - 看看我们得到了什么。
var varReference = someBigObj.someObj['item1'] || false;
// which is equivalent to
var varReference = 0 || false;
看看那里发生了什么?该引用为 0。所以varReference总是假的。在这种情况下,我实际上想要数字 0,因为我需要访问数组元素。我认为串起来对我来说很奇怪,因为它不是字符串,而是整数。我怎样才能仍然使用||false,但实际上将数字 0 视为有效值。
注意:我知道我可以显式测试等。 只是好奇是否有快捷方式或本机 js(我不知道)可以解决我的解决方案。 认为类似的东西会起作用,但没有。
Number(0) || false
附加说明:我最终没有放置 || false,因为即使它没有正确引用也没有错误。所以这实际上并不重要,但我总是喜欢有后备,所以这就是我好奇的原因。
如果您希望 falsey 值通过测试,那么测试可能需要显式查找 undefined
,而不仅仅是 falsey 值。
var varReference = someBigObj.someObj['item1'] !== undefined ? someBigObj.someObj['item1'] : false;
请记住,许多合法值都是错误的,例如0
、""
、null
(和其他)。
您可以使用内联 if 来检查您的值是否undefined
显式。
var varReference = (typeof(someBigObj.someObj['item1']) !== 'undefined') ? someBigObj.someObj['item1'] : false;
与其尝试查看属性中的值(及其虚假性,有时会让您失败),不如使用 in
运算符检查对象中是否存在该属性:
var varReference = 'item1' in someBigObj.someObj
? someBigObj.someObj['item1']
: false;
可以简化为
var varReference = 'item1' in someBigObj.someObj && someBigObj.someObj['item1'];
相关文章:
- 控制台返回var不是't定义,但它是
- 从var向代码隐藏函数传递值
- 如何通过引用var Using DataTables来进行分页或排序
- jQuery语法添加了var
- 如何将具有文本类型值的var放入jQuery函数中
- JS:检查URL中的参数,然后迭代一个参数为var的函数
- 当var==0时,我如何显示一个警报
- javascript中对象构造函数中的var属性与this.properties
- 函数中this和var之间的区别
- JavaScript-的含义:var DndUpload=函数(inputElem){};
- Understanding Javascript scope with "var that = this&qu
- 如何使用javascript var引用Mongo DB集合's字段
- var w = q||问2;这个表达式是什么意思
- 为什么JavaScript抛出'未捕获的ReferenceError:var未定义'定义var时
- 在jquery函数内部设置来自jquery函数的var;t运行
- 确定var是否是javascript中的elementFinder对象的方法是什么
- 如何使用var名称调用JSON数据
- '这'在使用之前分配给了一个var
- 更改json/javascript对象var名称或从数字var中检索值
- 好奇其他人将如何为此创建后备:som var = 数字 0 ||假