我通过阅读书籍自学JavaScript。我无法理解其中一个代码
var thenum = document.getElementById("sr_num").value;
thenum = +thenum || false
最后一行从未在整本书中解释过。我无法理解这是什么。任何人都可以向我解释这将非常感激。谢谢。
答案 0 :(得分:3)
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
。
答案 1 :(得分:0)
HTMLInputElement.value
返回一个字符串。 +thenum
被称为一元加号运算符,并将任何值转换为Number
或NaN
。由于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);
希望这有助于澄清事情。