/*
es6 提供了二进制和八进制数值的新写法,分别用前缀 0b (或 0B) 和 0o (或 0O) 表示。
从 es5 开始,在严格模式中,八进制数值就不再允许使用前缀 0 表示, es6 进一步明确,要使用前缀 0o 表示。
*/
console.log(0b111110111 === 503) //true
console.log(0o767 === 503) //true
/*
一、 Number.isFinite()、Number.isNaN()
es6 在Number 对象上新提供了 Number.isFinite()、Number.isNaN() 两个方法。
Number.isFinite() 用来检查一个数值是否为有限的(finite) 返回布尔值
Number.isNaN() 用来检查一个值是否为 NaN 返回布尔值
*/
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('string')) //false 无限
console.log(Number.isFinite(true)) //false 无限
// es5 可以通过下面的代码的部署 Number.isFinite 方法
(function (global) {
var global_isFinite = global.isFinite
Object.defineProperty(Number, 'isFinite', {
value:function isFinite(value){
return typeof value === 'number' && global_isFinite(value)
},
configurable:true, // 可配置
enumerable:false, // 可枚举
writable:true // 可写
})
})(this)
console.log(Number.isNaN(NaN)) //true 是NaN
console.log(Number.isNaN('string')) //false 不是NaN
console.log(Number.isNaN(true)) //false 不是NaN
// es5 可以通过下面的代码部署 Number.isNaN 方法
(function (global) {
var global_isNaN = global.isNaN
Object.defineProperty(Number, 'isNaN', {
value:function isNaN(value){
return typeof value === 'number' && global_isNaN(value)
},
configurable:true,
enumerable:true,
writable:true
})
})(this)
/*
这两个新方法与传统的全局方法 isFinite() 和 isNaN() 的区别在于:
传统方法先调用 Number() 将非数值转为数值,再进行判断,
而新方法只对数值有效,对于非数值一律返回false。Number.isNaN() 只有对于NaN才返回true,非true一律返回false
*/
/*
二、Number.parseInt()、Number.parseFloat()
es6 将全局方法 parseInt() 和 parseFloat() 移植到了 Number 对象上面,行为完全保持不变。
*/
/*
三、Number.isInteger()
Number.isInteger() 用来判断一个值是否为整数。需要注意的是,在 javascript 内部,整数和浮点数是同样的储存方法,所以 3 和 3.0 被视为同一个值
*/
/*
四、Number.ERSILON
es6 在Number对象上面新增一个极小的常量---- Number.ERSILON
*/
/*
五、安全整数和 Number.isSafeInteger()
javascript 能够准确表示的整数范围在 -2 的 53 次方 到 2 的 53 次方 之间,超过这个范围就无法精确表示
*/
6.1、数值的扩展
最新推荐文章于 2022-04-02 16:33:06 发布