发现变量是否为数字

时间:2017-06-08 12:36:13

标签: javascript html arrays

有没有办法将nan与变量进行比较?我需要这个在不使用javascript函数的情况下理解变量是否为数字。

3 个答案:

答案 0 :(得分:0)

我不确定你为什么要避免为此调用函数,但这是一个快速的黑客攻击:

var myNumber = NaN;
typeof myNumber === "number" && myNumber + "" !== "NaN"

这样一来,如果它是一个number而不是NaN,你会得到真的,如果它只是一个数字,如果它是一个非数字,它将返回true,它将返回false /

再次,建议使用isNaN函数

答案 1 :(得分:0)

您可以通过检查值是否为NaN来测试值是否为NaN:

var foo = NaN;
console.log(foo !== foo); // true 

var bar = 4;
console.log(bar !== bar); // false 

note for this in the ECMAScript specs

根据评论,我想提供这样的功能来检测变量是否是数字:

function isNum (candidate) { 
  return +(candidate) === +(candidate) && //check for NaN with conversion
          candidate !== (candidate / 0) && //check for Infinity
          candidate !== '' && candidate !== null; //check for empty string and null, since +'' and +null will return 0
}

//returns false
console.log(isNum({ foo: 1 }));
console.log(isNum(''));
console.log(isNum(NaN));
console.log(isNum(undefined));
console.log(isNum(null));
console.log(isNum(Infinity));
console.log(isNum("foo1"));
console.log(isNum([1, 2, 3]));

console.log("------------------------------------------------------------------");

//returns true
console.log(isNum(9999999999));
console.log(isNum(.23));
console.log(isNum(0));
console.log(isNum(1e+30));

//will treat this also as number, since it could be easily converted  
//typeof +"112233" === "number"
console.log(isNum("112233")); 
//but still you can modify this method to use 
//typeof candidate === "string" or (candidate).constructor === String

很高兴听到您的意见/建议。

答案 2 :(得分:-2)

忽略你对#34;没有Javascript功能" ...:

的奇怪限制
content_type

这是确定值是typeof num == 'number' && !isNaN(num) 而不是Number的正确方法。如果您还想确定数字是否有限(不是NaN ),请改用Infinity