Javascript - 将 undefined 替换为 0



我有一个由用户输入定义的变量。我只想在它undefined时才替换它的值.但如果是NaN,那就不行了.我该怎么做?

我尝试做x || 0但这也取代了NaN价值观。

对于 ES6 用户,您可以简单地执行以下操作:

x ?? 0

?? 是一个 Nullish 合并运算符:

一种逻辑运算符,当左侧操作数为 null 或未定义时返回其右侧操作数,否则返回其左侧操作数。

您可以对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(它不能再全局压缩(,最好修复这些糟糕的代码。


如果要同时检查nullundefined,并且只检查这些值,则可以使用 == 而不是 ===

if (x == null) {
    x = 0;
}

现在x将被设置为 0 如果它是 nullundefined ,但不是任何其他值。您也可以在测试中使用undefined。这是完全一样的。

if (x == undefined) {
    x = 0;
}

从你的问题来看,似乎有点像你专门在寻找number元素,甚至是NaN。如果要将其限制为包括 NaN 在内的基元数,请使用 typeof 进行测试。

if (typeof x !== "number") {
    x = 0;
}

但是,您将丢失数字字符串和其他可以成功转换为数字的值,因此这取决于您最终需要什么。

您可以使用typeof进行测试(其中包括(:

if (typeof x == 'undefined') x = y;

另一种方法是针对未定义测试严格相等:

if (x === void 0) x = y

在这种情况下,我们使用void 0作为安全,因为undefined实际上可以重新定义。

您可以使用 typeof 和 isNaN 函数的组合来实现所需的行为。下面是一个示例:

if (typeof x === "undefined" || isNaN(x)) {
  x = defaultValue;
}

此代码检查 x 的值是未定义还是 NaN,如果是,则将其替换为默认值。请注意,isNaN 函数对于避免替换 NaN 值是必要的,因为 NaN 不等于自身,因此无法使用通常的相等运算符进行比较。

或者,您可以使用 Number.isNaN 函数,这是一种更新、更可靠的方法来检查 NaN 值:

if (typeof x === "undefined" || Number.isNaN(x)) {
  x = defaultValue;
}

此代码的行为方式与前面的示例相同,但使用 Number.isNaN 函数而不是 isNaN。请注意,Number.isNaN 仅在较新的 JavaScript 版本(ES6 及更高版本(中可用。

我希望这有帮助!

您只需使用

x === undefined && (x = 0);

男孩。也许你可以试试这个,你好,男孩。也许你可以试试这个,你好,男孩。也许你可以试试这个,你好,男孩。也许你可以试试这个,你好,男孩。也许你可以试试这个

var a;//undefined
a = ~~a
console.log(a)//0

相关内容

  • 没有找到相关文章

最新更新