在 Javascript 中,num = +thenum ||错误的意思

In Javascript, what does num = +thenum || false mean?

本文关键字:错误 意思 +thenum Javascript num      更新时间:2023-09-26

我通过读书自学JavaScript。我无法理解其中的代码

var thenum = document.getElementById("sr_num").value;
thenum = +thenum || false

最后一行在整本书中从未解释过。我不明白这是怎么回事。任何人都可以向我解释这一点,将不胜感激。谢谢。

thenum = +thenum || false

是为了确保thenum确实是一个有效的数字。如果不是,则将thenum分配false

+thenum将尝试将thenum中的字符串值(document.getElementById("sr_num").value将给出字符串值)转换为数字。如果失败,它将返回NaN,这被认为是假的。你可以像这样确认

console.log(+"All hail lelouch");
// NaN

因此,如果thenum不是有效的数字,则表达式变为

thenum = NaN || false

由于NaN是伪造的,因此false将在thenum中分配。

注意:此表达式不起作用的唯一有效数字输入是 0 。因为当输入"0"时,表达式变为

thenum = +"0" || false
       = 0 || false

因此,thenum仍将被分配false.

HTMLInputElement.value返回一个字符串。 +thenum称为一元加运算符,并将任何值转换为NumberNaN。由于NaN是假的,OR(||)运算符将计算表达式的后半部分,将false分配给thenum。另一个例外是,如果+thenum碰巧返回 0,这是唯一的假数字。这也会将false分配给thenum,尽管这似乎不是故意行为。除了这两个例外,由于所有其他数字都是真实的,因此不会计算OR表达式的后半部分,并且该数字将分配给thenum。以下代码片段将演示正在发生的事情。

等效行为:

if(+thenum) {
    thenum = +thenum;
else {
    thenum = false;
}

(可能)预期行为:

if(isNaN(+thenum)) {
    thenum = false;
} else {
    thenum = +thenum;
}

上述(可能)预期行为的简写:

thenum = (isNaN(thenum = +thenum) ? false : thenum);

希望这有助于澄清事情。