您的位置:首页 > 其它

【es6】数值的扩展

2017-06-16 16:33 204 查看

二进制 & 八进制

1.二进制前缀:0b(0B)

八进制前缀:0o(0O)

2.es5严格模式不允许使用前缀0表示八进制,如:011(9)

3.二进制八进制转换为十进制使用Number

Number(‘0b111’) //7

Number.isFinite(), Number.isNaN()

1.isFinite()检查数值是否非无穷

Number.isFinite(0.8); //true
Number.isFinite(NaN); //false
NaN, Infinity, -Infinity, 字符串, 布尔值。。均为false


2.isNaN()检查一个值是否为NaN(非数值)

Number.isNaN('aa'); //false
Number.isNaN('aa'/'aa'); //true
Number.isNaN(NaN/9); //true


NaN == NaN //false(NaN 与所有值都不相等,包括它自己)


3.新方法只对数值有效,非数值一律返回 false(传统全局isFinite(), isNaN()方法会先调用Number()将非数值转换为数值)

Number.parseInt(), Number.parseFloat()

1.相当于原全局方法parseInt(), parseFloat(),为了逐步减少全局性方法,使语言模块化

Number.parseInt() === parseInt(); //true

Number.isInteger()

1.判断一个值是否为整数(3.0也为整数)

Number.EPSILON

1.新增的一个常量,用来为浮点数计算设置误差范围,如果误差小于Number.EPSILON则认为结果正确

安全整数和Number.issafeInteger()

js能精确表示的整数范围: -2^{53} < x < 2^{53} ,超过则不精确,如:

Math.pow(2, 53) === Math.pow(2, 53) + 1 //true

ES6引入了

Number.MAX_SAFE_INTEGER(Math.pow(2, 53) - 1)和

Number.MIN_SAFE_INTEGER(-Number.MAX_SAFE_INTEGER)这两个常量,用来表示这个范围的上下限。

Number.issafeInteger()用来判断一个整数是否在这个范围内

实际应用中,我们不只要验证计算结果是否为安全整数,也应检验参与运算的每个值

Number.isSafeInteger(9007199254740993 - 990)
// true
Number.isSafeInteger(9007199254740993)
// false
9007199254740993 - 990
// 返回结果 9007199254740002
// 正确答案应该是 9007199254740003


Math对象的扩展

1.Math.trunc() 去除一个数的小数部分,返回整数部分

(对于非数值先将其转换为数值,空值或无法截取整数的返回NaN)

2.Math.sign() 判断一个数是正数,负数,还是0

返回值:

参数为正数,返回+1;

参数为负数,返回-1;

参数为0,返回0;

参数为-0,返回-0;

其他值,返回NaN。

3. Math.cbrt() 计算一个数的立方根

(对于非数值先将其转换为数值,空值或无法计算的返回NaN)

4. undefined 返回一个数的32位无符号整数形式有多少个前导0

Math.clz32(0) // 32
Math.clz32(0b00100000000000000000000000000000) // 2


左移运算符(<<)与Math.clz32方法直接相关。(每左移一位,clz32()值减少一)

对于小数,Math.clz32方法只考虑整数部分。

对于空值或其他类型的值,Math.clz32方法会将它们先转为数值,然后再计算。

NaN, Infinity, null, undefined, ‘foo’, [], {} 均为32

true为31
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  es6