Es6中Number的扩展

  1. 八进制与二进制

    在es5中,严格模式下,不再允许0o 0O (八进制)或者 0b 0B(二进制)这种表示八进制或二进制的写法。

    es6在此对此功能进行了完善

	0b111110111 === 503 
	0o767 === 503

es5开始,严格模式中,不再允许这样表示,但es6此改善了

	// 非严格模式
	(function(){
   
	  console.log(0o11 === 011);
	})() // true
	
	// 严格模式
	(function(){
   
	  'use strict';
	  console.log(0o11 === 011);
	})() // Uncaught SyntaxError: Octal literals are not allowed in strict mode.

如果想将0o 或者 0b 转换为十进制,只需使用Number方法

	Number('0b111');
	Number('0o333');
  1. Number.isFinite(), Number.isNaN()

    isFinite()方法就是判断这个数,是不是有限的(finite)即不是Infinity。

	Number.isFinite(15); // true
	Number.isFinite(1.5); // true
	Number.isFinite(NaN); // false
	Number.isFinite(Infinity) // false
	Number.isFinite(-Infinity) // false
	Number.isFinite('foo') // false
	Number.isFinite('15') // false
	Number.isFinite(true) // false
	

只要参数不是数字,一律返回false

isNaN()方法检测一个数,是否为NaN

	Number.isNaN(NaN) // true
	Number.isNaN(1) // flase
	Number.isNaN('15') // false
	Number.isNaN(true) // false
	Number.isNaN(9 / NaN)  // true
	Number.isNaN('true' / 0) // true
	Number.isNaN('true' / 'true') // true
	Number.isNaN(null) // false
	Number.isNaN(undefined) // false

参数结果只要不是NaN, isNaN()就会返回false

传统的isFinite和isNaN 会先调用包装类把参数转换为数字,再进行比较,而Number.isFinite和isNaN 只要参数不是数字就返回false

下面对比一下

	isFinite(Infinity); // false
	isFinite(true); // true
	isFinite('25'); // true
	isFinite(25); // true
	
	Number.isFinite(Infinity); // false
	Number.isFinite(true); // false
	Number.isFinite('25')l // false
	Number.isFinite(25); // true
	isNaN(NaN)
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值