双引号之间的数字

时间:2016-09-14 16:22:59

标签: javascript string numbers

根据此代码

function sayHi(myAge) {
    "use strict";
    if (isNaN(myAge)) {
        return "Ture";
    } else {
        return "False";
    }
}
sayHi("12");

isNan()返回false,为什么? “12”不是数字。

因为当我这样做时

var myAge = "12";
alert(myAge === 12);

它将返回false,因为“12”是一个字符串,但是12是一个数字。

3 个答案:

答案 0 :(得分:2)

来自the spec

  

如果参数强制为NaN,则返回true,否则返回false。

===比较:

  

如果Type(x)与Type(y)不同,则返回false。

答案 1 :(得分:2)

因为NaN是JS中的特殊值,而不是类型。 sayHi(NaN)将返回true。

如果要检查值是否为数字类型,则应该执行

if (typeof myAge === "number")

如果你想确定,那也不是NaN,那么

if (typeof myAge === "number" && !isNaN(myAge))

答案 2 :(得分:1)

isNaN()函数确定值是否为NaN。注意:isNaN函数内部的强制有一些有趣的规则;您也可以使用ECMAScript 6中定义的Number.isNaN(),或者使用typeof来确定值是否为非数字

参考: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/isNaN