本节我们学习 ES6
中的常用数据类型之数值(Number)类型。ES6
中除了 JavaScript
中的六种数据类型之外,还引入了一种新的原始数据类型 Symbol
,它是 JavaScript 语言的第七种数据类型:
-
Number
(数值) -
String
(字符串) -
Boolean
(布尔值) -
Object
(对象) undefined
null
Symbol
二进制和八进制表示法
ES6
中提供了二进制和八进制数值的新的写法:
- 二进制的新写法可以使用前缀
0b
或者0B
表示。
let a = 0b1001;
console.log(a); // 输出:9
- 八进制的新写法可以使用前缀
0o
或者0O
表示。
let b = 0o345;
console.log(b); // 输出:229
从 ES5
开始,在严格模式之中,八进制就不再允许使用前缀 0
表示,ES6
进一步明确,要使用前缀0o
表示。
// 非严格模式
(function(){
console.log(0o11 === 011);
})() // true
// 严格模式
(function(){
'use strict';
console.log(0o11 === 011);
})()
执行代码后,报错信息如下所示:
SyntaxError: Octal literals are not allowed in strict mode.
如果要将 0b
和 0o
前缀的字符串数值转为十进制,要使用 Number
方法。
示例:
console.log(Number('0b110')); // 输出:6
console.log(Number('0o43')); // 输出:35
Number对象的常用方法
ES6
在 Number
对象上提供了一些方法,我们一起来看一下。
isFinite()方法
isFinite()
方法可以用于检查一个数值是否为有限的。如果是则返回 true
,不是则返回 false
。
示例:
console.log(Number.isFinite(1)); // true
console.log(Number.isFinite(1000.0)); // true
console.log(Number.isFinite('xkd')); // false
console.log(Number.isFinite(NaN)); // false
console.log(Number.isFinite(true)); // false
上述代码中可以看到,只有当 isFinite
方法中的参数为有限数值时,才会返回 true
,参数的值为字符串或者布尔类型等都会返回 false
。
isNaN()方法
isNaN()
方法用来检查一个值是否是 NaN
,为 NaN
则返回 true
,否则返回 false
。
示例:
可以看到,下面代码中只有第一个 isNaN()
方法的返回结果为 true
:
console.log(Number.isNaN(NaN)); // true
console.log(Number.isNaN(null)); // false
console.log(Number.isNaN('xkd')); // false
console.log(Number.isNaN(true)); // false
parseInt()方法
parseInt()
方法用于将值转换为整型。如果参数不为数值类型,则会返回 NaN
。
示例:
console.log(Number.parseInt(1.215)); // 1
console.log(Number.parseInt(null)); // NaN
console.log(Number.parseInt(8.0)); // 8
console.log(Number.parseInt('xkd')); // NaN
parseFloat()方法
parseFloat()
方法用于将值转换为浮点型。
示例:
console.log(Number.parseFloat(2.15)); // 2.15
console.log(Number.parseFloat(7)); // 7
console.log(Number.parseFloat(16)); // 16
console.log(Number.parseFloat(null)); // NaN
console.log(Number.parseFloat(undefined)); // NaN
console.log(Number.parseFloat('xkd')); // NaN
isInteger()方法
isInteger()
方法用来判断一个值是否为整数。需要注意的是,在 JavaScript
内部,整数和浮点数是同样的储存方法,例如 1
和 1.0
被视为同一个值。
示例:
从下面代码中可以看出,只有当参数为整数结果才会返回 true
,当参数不为整数或者数值类型的值时,也会返回 false
:
console.log(Number.isInteger(2.15)); // false
console.log(Number.isInteger(7)); // true
console.log(Number.isInteger(16)); // true
console.log(Number.isInteger('xkd')); // false
console.log(Number.isInteger(null)); // false
console.log(Number.isInteger(true)); // false
Math对象的方法
ES6
在 Math 对象上新增了一些与数值相关的方法,这些方法全部都是静态方法,只能在 Math
对象上调用。
trunc()方法
trunc()
方法用于去除一个数的小数,只保留整数部分,也可以理解为取整。
示例:
console.log(Math.trunc(1.85)); // 1
console.log(Math.trunc(-7.15)); // -7
console.log(Math.trunc(25)); // 25
console.log(Math.trunc('xkd')); // NaN
console.log(Math.trunc(true)); // 1
console.log(Math.trunc(false)); // 0
需要注意的是,当方法中参数的类型为字符串时,会返回一个 NaN
,当参数为 true
时返回 1
,为 false
则返回 0
。
sign()方法
sign()
方法用来判断一个数是正数、负数、或者 0
。当参数为负数时返回 -1
,为 0
时返回 0
,为正数时返回 1
。
示例:
console.log(Math.sign(-7)); // -1
console.log(Math.sign(0)); // 0
console.log(Math.sign(34)); // 1
console.log(Math.sign('xkd')); // NaN
console.log(Math.sign(true)); // 1
console.log(Math.sign(false)); // 0
cbrt()方法
cbrt()
方法用于计算一个数的立方根。
示例:
console.log(Math.cbrt(8)); // 2
console.log(Math.cbrt(27)); // 3
console.log(Math.cbrt(9)); // 2.080083823051904
console.log(Math.cbrt(0)); // 0
console.log(Math.cbrt(true)); // 1
console.log(Math.cbrt(false)); // 0
console.log(Math.cbrt('xkd')); // NaN
clz32()方法
clz32()
方法将参数转为 32
位无符号整数的形式,然后返回这个 32
位值里面有多少个前导 0
。
示例:
console.log(Math.clz32(1)); // 31
console.log(Math.clz32(0)); // 32
console.log(Math.clz32(14)); // 28
console.log(Math.clz32(188)); // 24
console.log(Math.clz32(true)); // 31
console.log(Math.clz32(NaN)); // 32
imul()方法
imul()
方法返回两个数以 32
位带符号整数形式相乘的结果,返回的也是一个 32
位的带符号整数。
示例:
console.log(Math.imul(2, 5)); // 10
console.log(Math.imul(-1, 4)); // -4
console.log(Math.imul(-2, -9)); // 18
console.log(Math.imul(NaN)); // 0
console.log(Math.imul(true)); // 0
fround()方法
fround()
方法返回一个数的单精度浮点数形式。
示例:
console.log(Math.fround(1.125)); // 1.125
console.log(Math.fround(1000)); // 1000
console.log(Math.fround(-1)); // -1
console.log(Math.fround(1.0254)); // 1.0254000425338745
hypot()方法
hypot()
方法返回所有参数的平方和的平方根。
示例:
console.log(Math.hypot(-1)); // 1
console.log(Math.hypot(3, 5)); // 5.8309518948453
console.log(Math.hypot(NaN)); // NaN
console.log(Math.hypot('xkd')); // NaN
console.log(Math.hypot(true)); // 1
console.log(Math.hypot()); // 0
网友评论