在 Javascript 中,num = +thenum ||错误的意思
In Javascript, what does num = +thenum || false mean?
我通过读书自学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
称为一元加运算符,并将任何值转换为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);
希望这有助于澄清事情。
相关文章:
- Node.js v6.2.0类扩展不是函数错误
- Jquery菜单操作不稳定,定位不正确,存在一般错误
- document.open/document.write没有正确地清除chrome中的文档——这是chrome的错误吗
- 试图在引导模式内动态生成图表,得到offsetWidth错误
- 为什么会出现错误;未捕获的类型错误:undefined不是函数;
- 我如何修复包含在captcha的addthis中的错误
- 同样,同样的错误'ahorcado.js:26未捕获类型错误:无法读取属性'beginPath'
- 节点是否需要模块传递带有方括号的arg?这是个错误吗
- Webpack/Rect:遵循egghead.io教程,但出现错误:您可能需要一个合适的加载程序来处理此文件类型
- CKFinder 3为所选文件返回错误的URL
- 同位素库错误:未捕获错误无布局模式包装生产线8
- 淘汰抛出消息:类型错误:
不是一个函数.什么意思 - 节点.JS错误 - process.env.NODE_TLS_REJECT_UNAUTHORIZED.这是什么意思
- 在 Javascript 中,num = +thenum ||错误的意思
- “根本没有回调”是什么意思?TJ'的告别文章中的Node.js错误处理
- 把环境和对象混为一谈是Javascript的根本错误,这是什么意思?
- Chrome's IndexedDB错误"内部错误检查键存在"是什么意思?
- t /= d 是什么意思?蟒蛇和获取错误
- JSLint错误“是什么;类型错误"意思是
- 此错误消息实例是什么意思