javascript中的值

整数检测

要检测一个值是否是整数,可以使用ES6的方法Number.isInteger(..)方法

1
2
3
4
5
6
7
8
9
10
11
Number.isInteger(42) // true
Number.isInteger(42.000) // true
Number.isInteger(42.3) // false
// ES6之前的ployfill
if(!Number.isInteger) {
Number.isInteger = function (num) {
return typeof num === 'number' && num % 1 == 0
}
}

不是数字的数字

NaN是一个特殊值,它和自身不等,是唯一一个非自反的值(自反即 x === x 不成立的值), 而NaN != NaNtrue

如何判断一个值是不是NaN,isNaN(..)有严重的缺陷

1
2
3
4
5
var a = 2 / 'foo'
var b = 'foo'
window.isNaN(a) // true
window.isNaN(b) // true

ES6可以使用工具函数Number.isNaN(..), 在ES6之前的可以

1
2
3
4
5
6
7
8
9
10
11
12
13
if (!Number.isNaN) {
Number.isNaN = function (n) {
return typeof n === 'number' && window.isNaN(n)
}
}
// 也可以 利用它与自身不等的特性
if (!Number.isNaN) {
Number.isNaN = function (n) {
return n !== n
}
}