数值的扩展
Number.isNaN()
传统的
isNaN()
函数会把非数值的参数转化成数值再进行判断
isNaN('str'); // true
// 'str'无法转为一个数值,返回true
Number.isNaN()
函数:用于判断传入的是否是非数值,
注意:是判断非数值,而不是判断数值
,如果参数类型不是NaN
,Number.isNaN一律返回false
。
Number.isNaN(NaN) // true
Number.isNaN(10) // false
Number.isNaN('11') // false
Number.isNaN(true) // false
Number.isNaN(2/NaN) // true
Number.isNaN('true' / 0) // true
Number.isNaN('true' / 'true') // true
Number.isFinite()
传统的
isFinite()
函数会把非数值的参数转化成数值再进行判断
isFinite('22'); // true
// '22'转为一个数值22,返回true
Number.isFinite()
函数:用来检查一个数值是否为有限的(finite),即不是无穷大(Infinity)
注意:
如果参数类型不是数值
,Number.isFinite一律返回false
。
Number.isFinite(1); // true
Number.isFinite(Infinity); //false
Number.isFinite(NaN); // false
Number.isFinite(Infinity); // false
Number.isFinite(-Infinity); // false
Number.isFinite('abc'); // false
Number.isFinite('111'); // false
Number.isFinite(true); // false
Number.parseInt()
Number.parseInt()
函数:解析一个字符串,返回一个整数。parseInt函数同样是从window对象下移植到Number对象下,但是它的作用没有任何变化
// ES5的写法
parseInt('12.34') // 12
// ES6的写法
Number.parseInt('12.34') // 12
Number.parseFloat()
Number.parseFloat()
函数:解析一个字符串,并返回一个浮点数。跟parseFloat一样,被移植到Number对象下,作用保持不变
// ES5的写法
parseFloat('123.45#') // 123.45
// ES6的写法
Number.parseFloat('123.45#') // 123.45
Number.isInteger()
Number.isInteger()
用来判断一个数值是否为整数。
Number.isInteger(11); // true
Number.isInteger(11.11); // false
注意1:
在javascript内部对整数和浮点数采用一样的存储方式,因此小数点后
如果都是0
的浮点数,都会被认为是整数
。
Number.isInteger(1.0); // true
Number.isInteger(1.00); // true
注意2:
如果参数不是数值
,Number.isInteger返回false
。
Number.isInteger() // false
Number.isInteger(null) // false
Number.isInteger('15') // false
Number.isInteger(true) // false
Number.EPSILON
Number.EPSILON常量
定义一个极小的常量。根据规格,它表示 1 与大于 1 的最小浮点数之间的差。
Number.EPSILON
// 2.220446049250313e-16
Number.EPSILON
的出现是用来判断浮点数的计算误差,如果浮点数计算得到的误差不超过Number.EPSILON
的值,就表示可以接受这样的误差。
Math…
ES6给Math对象新增了17个函数,就不一一解释,因为平时用到不多。
指数运算符(**)
2 ** 2 // 4
2 ** 3 // 8
这个运算符的一个特点是右结合,而不是常见的左结合。
多个指数运算符
连用时,是从最右边
开始计算的。
// 相当于 2 ** (3 ** 2)
2 ** 3 ** 2
// 512
指数运算符可以与等号结合,形成一个新的赋值运算符
(**=)
。
let a = 1.5;
a **= 2;
// 等同于 a = a * a;
let b = 4;
b **= 3;
// 等同于 b = b * b * b;
详细内容请访问------阮一峰的es6入门