回答
您可以对undefined
值进行严格比较。
if (x === undefined) {
x = 0;
}
当然你要确保x
已经正确申报如常。
如果您有关于undefined
值由非常糟糕的代码(用新值覆盖)被困扰的任何敏感,那么你可以使用void
运营商获得有保证的undefined
。你可以做一个比较严格的undefined
值。
if (x === void 0) {
x = 0;
}
与void
无关的操作数。不管你给它什么,它都会返回undefined
。
这些都是等价的:
if (x === void undefined) {
x = 0;
}
if (x === void "foobar") {
x = 0;
}
if (x === void x) {
x = 0;
}
最后,如果有人压扁undefined
本地(不能再全球压扁),这是更好地解决这个糟糕的代码。
如果你想同时检查null
和undefined
在同一时间,只有那些价值,你可以用==
,而不是===
。
if (x == null) {
x = 0;
}
现在x
将被设置为0
,如果这是不是null
或undefined
,但没有任何其他价值。您也可以在测试中使用undefined
。完全一样。
if (x == undefined) {
x = 0;
}
从你的问题,好像你一点点会专门找number
元素,甚至NaN
。如果您想将其限制为原始数字,包括NaN
,则使用typeof
进行测试。
if (typeof x !== "number") {
x = 0;
}
但是,你会失去数字字符串,并且可以成功地转换为数字的其他值,所以这取决于你最终需要。
如果我定义的变量如下: var x = parseFloat(self.y()); 在这种情况下,x总是成为NaN,不管x是未定义的还是NaN。有没有什么办法可以检查X是否未定义? – user3312508 2014-12-05 16:42:22
@ user3312508:您只需使用'if'语句。你说如果'x'不是'undefined',那么你想运行'parseFloat(self.y());'部分并将它分配给'x',对吧? – 2014-12-05 16:45:12
您可以测试使用typeof(除其他事项外):
if (typeof x == 'undefined') x = y;
另一种方法是,以测试对未定义全等:
if (x === void 0) x = y
在这种情况下,我们使用void 0
以来undefined
安全实际上可以重新定义。
*“,因为'undefined'实际上可以被重新定义。”*自ES5以来。 – 2014-12-05 16:23:03
当然,但是作为一个实际问题,我几乎不建议让一个不知道如何写if语句的人混淆,以比较某些未定义的东西,比如void 0,以及它与实际上不存在的概率之间的关系'undefined'已被重新定义,这是我在十多年的JS编程中从未见过的东西。 – 2014-12-05 16:24:20
@torazaburo:*“......我在JS编程的十多年中从未见过的东西”*你和我都是。让我感到奇怪的是,人们对全球“未定义”的重新定义或影子的迷恋,而不是其他全球定义的影子。 – 2014-12-05 16:28:45
你可以只用
x === undefined && (x = 0);
这是不好的语法,会失败大多数棉绒。 – 2014-12-05 16:20:26
我接受linters会抱怨意外的任务,但我不明白为什么这是“糟糕的语法”。它利用了逻辑运算符可以短路的事实。 – 2014-12-05 16:23:53
让缩小器做这种重写,其中大部分都会做。对于普通人来说,写if语句作为if语句。 – 2014-12-05 16:25:54
- 1. 将JavaScript undefined替换为null
- 2. 将false转换为undefined(JavaScript)
- 3. Javascript minification为什么用false替换!1和true用0
- 4. 定义替换为0
- 5. Javascript替换为
- 6. 替换backbone.js中的undefined
- 7. 在Mac OSX中替换为--no-undefined
- 8. JavaScript正则表达式替换$ 0
- 9. 将R,“是”替换为1,将“否”替换为0
- 10. 。替换为JavaScript/jQuery
- 11. isalpha替换为JavaScript?
- 12. 用NA替换整数(0)
- 13. 用空格替换0
- 14. 用NaN替换float 0
- 15. JavaScript:将NaN转换为0
- 16. Javascript替换方法,替换为“$ 1”
- 17. 。替换为Javascript替换多个字符
- 18. 将json_encode转换为Javascript undefined/null
- 19. Javascript正则表达式替换[0]而不是0
- 20. javascript的意义:void(0)返回“undefined”
- 21. Javascript无法设置属性0的undefined
- 22. 将MYSQL中的44替换为0?
- 23. 替换后动画到高度为0
- 24. 在mysql中将0替换为null
- 25. 将矩阵中的0替换为NA
- 26. Tablesorter n [0] undefined
- 27. Javascript Methodname被替换为!==
- 28. JavaScript替换为增量
- 29. 全部替换为javascript
- 30. 的Javascript替换为等号
'的typeof X === undefined'' – ajp15243 2014-12-05 16:15:57
很快做到这一点,你可以展示你的代码,请。 – putvande 2014-12-05 16:17:06
让我们来看看,如何检查是否有未定义的东西?这听起来像我可能会测试一些东西的声明!也许我可以尝试一个'if'语句。但是,情况会是怎样?也许这将是一个“平等”的条件,你知道,这是'==='。所以只是猜测,但也许'x === undefined'可以工作,或者完成'if'语句,if(x === undefined)'。那里,那并不难。 – 2014-12-05 16:19:45