二进制和八进制的表示法
二进制和八进制的新写法:前缀0b(或0B)和0o(或 0O)标示
ES5严格模式下,八进制不允许使用前缀0表示
ES6进一步明确使用前缀0o表示
// 非严格模式
(function(){
console.log(0o11 === 011);
})() // true
// 严格模式
(function(){
'use strict';
console.log(0o11 === 011);
})() // Uncaught SyntaxError: Octal literals are not allowed in strict mode
- 0b和0o前缀的字符串数值转十进制,要使用Number方法
Number('0b111');//7
Number('0o10'); //8
Number.isFinite(),Number.isNaN()
- Number.isFinite()用来检查一个数值是否为有限的(finite),即不是Infinity
console.log(Number.isFinite(15)); //true
console.log(Number.isFinite(0.8));; //true
console.log(Number.isFinite(NaN));; //false
console.log(Number.isFinite(Infinity));;//false
console.log(Number.isFinite(-Infinity));;//false
console.log(Number.isFinite('false'));; //false
console.log(Number.isFinite('15')); //false
console.log(Number.isFinite(true)); //false
- Number.isNaN()用来检查一个值是否为NaN。
console.log(Number.isNaN(NaN)); //true
console.log(Number.isNaN(15)); //false
console.log(Number.isNaN('15'));//false
console.log(Number.isNaN(true));//false
console.log(Number.isNaN(9 / NaN));//true
console.log(Number.isNaN('true' / 0));//true
console.log(Number.isNaN('true' / 'true'));//true
isFinite(25) // true
isFinite("25") // true
Number.isFinite(25) // true
Number.isFinite("25") // false
isNaN(NaN) // true
isNaN("NaN") // true
Number.isNaN(NaN) // true
Number.isNaN("NaN") // false
Number.isNaN(1) // false
ps:以上两个Number新方法针对传统全局的isFinite()和isNaN()的区别为,
传统方法先调用Number()将非数值转为数值,再进行判断
新方法只对数值有效,对于非数值的一律为false
Number.parseInt(),Number.parseFloat()
// ES5的写法
parseInt('12.34') // 12
parseFloat('123.45#') // 123.45
// ES6的写法
Number.parseInt('12.34') // 12
Number.parseFloat('123.45#') // 123.45
// 这样做的目的,是逐步减少全局性方法,使得语言逐步模块化。
Number.parseInt === parseInt // true
Number.parseFloat === parseFloat // true
Number.isInteger()
- Number.isInteger()用来判断一个数值是否为整数。
Number.isInteger(25) // true
Number.isInteger(25.1) // false
# JavaScript 内部,整数和浮点数采用的是同样的储存方法,所以 25 和 25.0 被视为同一个值。
Number.isInteger(25) // true
Number.isInteger(25.0) // true
# 如果参数不是数值,Number.isInteger返回false。
Number.isInteger() // false
Number.isInteger(null) // false
Number.isInteger('15') // false
Number.isInteger(true) // false
如果对数据精度的要求较高,不建议使用Number.isInteger()判断一个数值是否为整数
5E-325由于值太小,会被自动转为0,因此返回true