#你不知道的javascript中卷#(4)整数的安全范围 整数检测 NaN

  • Post author:
  • Post category:java



1、数字的范围:

最大整数是:2^53 – 1, 即9007199254740991,在ES6中的定义是,Number.MAX_SAFE_INTEGER

最小整数是:-9007199254740991,在ES6中的定义是,Number.MIN_SAFE_INTEGER


2、检测一个值是不是整数,可以使用ES6中的Number.isInteger()方法

Number.isInteger(42) // true
Number.isInteger(42.00) // true
Number.isInteger(42.02) // false


3、NaN


3.1

、一般定义:如果数学运算的操作数不是数字类型(或者无法解析为常规的十进制或十六进制数字),就无法返回一个有效的数字,这种情况下的返回值就是NaN


3.2

、NaN不是一个数字,将它理解为无效数值,可能会更准确一点


3.3

、换句话来说就是,NaN是一个不是数字的数字

例子为:

var c = 3 / 'foo'
console.log(c) // NaN
但是
console.log(typeof(c) === 'number')  // true

所以说NaN是一个不是数字的数字,比较绕口


3.4

、检查一个变量的值是否为NaN,不可以如同null、undefined一样,因为NaN是一个特殊值,它和本身不相等,是唯一一个非自反

console.log(undefined === undefined) // true
console.log(null === null) // true
NaN是非自反
console.log(NaN === NaN) // false
console.log(NaN != NaN) // true

所以我们只能通过其他方式进行判断


(1):isNaN判断方法(有弊端)

一般正常的判断为:

var c = 3 / 'foo'
console.log(isNaN(c)) // true

结果是对的

但是:

var d = 'foo'
console.log(isNaN(d))  // true

很明显, ‘foo’不是一个数字,但是也绝不是NaN


(2):Number.isNaN判断方法(比较好用)

var c = 3 / 'foo'
console.log(Number.isNaN(c))  // true
var d = 'foo'
console.log(Number.isNaN(d)) // false



版权声明:本文为zhumizhumi原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。