我正在编写一个函数,需要测试传递的参数是否为数字。我是新手,所以我写了这样的东西:
if (typeof num !== "number") {
return false;
}
我为了同样的目的看了别人的代码,他们就是这样的:
if (!num) {
return false;
}
我发现这令人困惑。如果零被传递给函数,那么!num的评估为真吗?第二块代码如何可靠地测试num参数的类型?
答案 0 :(得分:3)
“如果将零传递给函数,那么
!num
不会评估为真吗?”
是的,如果NaN
或任何虚假的非数字值。
“第二块代码如何稳健地测试
num
参数的类型?”
没有。它只测试价值的“虚假”。每个falsey值都会为true
语句提供if
结果。
这些值是:
false
""
0
NaN
null
undefined
任何其他值都将失败if
条件。
(当然,如果你不用!
来否定价值,那么所有这些都会被颠倒过来)
答案 1 :(得分:0)
您可以使用以下功能:isNaN(value)
答案 2 :(得分:0)
你是对的第二句话没有正确验证输入是否是数字。你不妨改进一下这样检查:
if((typeof(num)!==“number)||(isNaN(num)||(!isFinite(num){
return false;
}
答案 3 :(得分:0)
您是正确的,这不是有效的代码行。 Here Is Test 正确的代码是:
function isNumber(n) {
return !isNaN(parseFloat(n)) && isFinite(n);
}
中所述