javascript : || double pipe operator alternative that tests undefined only
下面的测试是否有较短的符号?
1
| (typeof x !="undefined") ? x : y; |
一种x || y,但只对未定义的(而不是假值)进行操作。
有点像c的EDOCX1[1]#
- 不,没有这样的接线员。
- 为什么?进一步缩短代码是否非常重要?
- ||不是双管道,只是逻辑上的"或"
- 定义函数?const foo = (x, y) => (typeof x !="undefined") ? x : y; ... foo(x, y)。
- 不幸的是,没有较短的方法只计算未定义的。
- @mplungjan:x y符号在日常的javascript中随处可见。但是当人们写它的时候——大多数时候——他们的真正意思是(X的类型!="未定义")?X:Y。当它因为一个错误的值(0是其中之一)而断裂时,他们会感到困惑。人们写x y是因为他们懒惰(或者因为他们在这里看到了x y,并且认为他们理解了x y,而忽略了副作用)。C中缺少该操作员,但由于大众需求增加了该操作员。所以我很惊讶在javascript中没有这样的符号
- 自1995年左右(网景)以来,我还没有对一个不稳定的价值感到惊讶。
事实上,这个问题应该重新措辞,就像在javascript中有空合并操作符一样?
答案是不,不是现在,但很快就要来了。请参阅此处的建议和此处的实施状态。
javascript中是否有"空合并"运算符?
如果您确定未定义永远不会被覆盖,那么可以使用类似于x === undefined的内容。这将返回您可以测试的true或false。
- (foo==未定义)如果foo未定义,将失败。(但如果foo设置为未定义foo=未定义,则不适用)