我有一个由用户输入定义的变量。我只想替换它的值,如果它是undefined
. 但如果是NaN
. 我该怎么做?
我试过这样做x || 0
,但这也取代了NaN
价值观。
我有一个由用户输入定义的变量。我只想替换它的值,如果它是undefined
. 但如果是NaN
. 我该怎么做?
我试过这样做x || 0
,但这也取代了NaN
价值观。
您可以对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;
}
但是,您将丢失可以成功转换为数字的数字字符串和其他值,因此这取决于您最终需要什么。
您可以使用 typeof 进行测试(除其他外):
if (typeof x == 'undefined') x = y;
另一种方法是针对 undefined 测试严格相等性:
if (x === void 0) x = y
在这种情况下,我们将void 0
其用作安全性,因为undefined
实际上可以重新定义。
只需一个
x === undefined && (x = 0);
男生。也许你可以试试这个,你好,男孩。也许你可以试试这个,你好,男孩。也许你可以试试这个,你好,男孩。也许你可以试试这个,你好,男孩。也许你可以试试这个
var a;//undefined
a = ~~a
console.log(a)//0