ES6提供了二进制和八进制数值的新写法,分别用前缀0b和0o(或0O)表示。
二进制和八进制转十进制可以用Number()
Number('0b111');//7
Number('0o10');//8
Number.isFinite()用来检查一个数值是否为有限的
Number.isFinite(1);//true
Number.isFinite(0.6);//true
Number.isFinite('5');//false
Number.isFinite('bar');//false
Number.isFinite(NaN);//false
Number.isFinite(Infinity);
(function(global){
var global_isFinite=global.isFinite;
Object.definedProperty(Number,'isFinite',{
value:function isFinite(value){
return typeof value==='Number'&& global_isFinite(value);
},
configurable:true,
enumerable:false,
writable:true
});
})(this);
Number.isNaN()用来检查一个值是否为NaN。
Number.isNaN(NaN);//true
Number.isNaN(1);//false
Number.isNaN('1');//false
Number.isNaN(true);//false
Number.isNaN(9/NaN);//true
Number.isNaN('true'/0);//true
Number.isNaN('true'/'true');//true
(function(golbal){
golbal_isNaN=golbal.isNaN;
Object.definedProperty(Number,'isNaN',{
value:function isNaN(value){
return typeof value==='number'&& global_isNaN(value);
},
configurable:true,
enumerable:false,
writable:true
});
})(this);
isFinite()与Number.isFinite()的区别:
isFinite()是将非数值转为数值,在进行判断,Number.isFinite()只对数值有效
isNaN()与Number.isNaN()的区别:
Number.isNaN()只有对NaN才返回true,非NaN一律返回false
Number.isInterger()用来判断一个值是否为整数,需要注意的是,在Javascript内部,整数和浮点数是同样的存储方法,所以3.0和3被视为同一个值。
Number.isInterger(2);//true
Number.isInterger(2.0);//true
Number.isInterger(2.1);//false
Number.isInterger('1');//false
Number.isInterger(true);//false
(function(golbal){
var floor=Math.floor,
isFinite=golbal.isFinite;
Object.defineProperty(Number,'isInteger',{
value:function isInterger(value){
return typeof value==='number'&&isFinite(value)&&floor(value)===value;
},
configurable:true,
enumerable:false,
writable:true
})
})(this);
指数运算符
ES6新增了一个指数运算符(**)
2**2=>2*2//4
2**3=>2*2*2//8
let a=2;
a**=2=>a=a*a
a**=3=>a=a*a*a