es6笔记之十三-数字变化、Math新增、ES2018(ES9)新增

数字(数值)变化:
二进制: (Binary)
let a = 0b010101;
八进制: (Octal)
let a = 0o666; 0 开始,最大数字到7
十六进制: #ccc 颜色

Number()、parseInt()、 parseFloat()//mark一记,复习下
[# Number()、parseInt()、parseFloat()的区别

现在的改变是很多数字方法都加了Number.xxx(),规范化了
Number.isNaN(NaN) -> true/false

let a =12;
console.log(isNaN(NaN));//以前写法,现在也可用
console.log(Number.isNaN(a));//false

Number.isFinite(a) 判断是不是数字
Number.isInteger(a) 判断数字是不是整数
Number.parseInt();
Number.parseFloat();

安全整数:

安全整数范围: -(2^53-1) 到 (2^53-1), 包含-(2^53-1) 和(2^53-1)
let a =-(253-1); //2的53次方
let b =2
53-1;
Number.isSafeInteger(a); //true
Number.MAX_SAFE_INTEGER 最大安全整数 就是253-1;
Number.MIN_SAFE_INTEGER 最小安全整数 就是-(2
53-1)

Math方法汇总,先总结下es5中常有的几种
1.min()和max()
Math.min()用于确定一组数值中的最小值。Math.max()用于确定一组数值中的最大值。

alert(Math.min(2,4,3,6,3,8,0,1,3)); //最小值alert(Math.max(4,7,8,3,1,9,6,0,3,2)); //最大值

2.舍入方法
Math.ceil()执行向上舍入,即它总是将数值向上舍入为最接近的整数;
Math.floor()执行向下舍入,即它总是将数值向下舍入为最接近的整数;
Math.round()执行标准舍入,即它总是将数值四舍五入为最接近的整数;
举例:

alert(Math.ceil(25.9)); //26alert(Math.ceil(25.5)); //26alert(Math.ceil(25.1)); //26alert(Math.floor(25.9)); //25alert(Math.floor(25.5)); //25alert(Math.floor(25.1)); //25alert(Math.round(25.9)); //26alert(Math.round(25.5)); //26alert(Math.round(25.1)); //25

3.random()方法
Math.random()方法返回介于0到1之间一个随机数,不包括0和1。如果想大于这个范围的话,可以套用一下公式:
值 = Math.floor(Math.random() * 总数 + 第一个值)
举例:

alert(Math.floor(Math.random() * 10 + 1));、//随机产生1-10之间的任意数
for (var i = 0; i<10;i ++) { 
    document.write(Math.floor(Math.random() * 10 + 5)); //5-14之间的任意数 
    document.write('
'); }

为了更加方便的传递想要范围,可以写成函数:

function selectFrom(lower, upper) { 
    var sum = upper - lower + 1; //总数-第一个数+1 
    return Math.floor(Math.random() * sum + lower);}
    for (var i=0 ;i<10;i++) { document.write(selectFrom(5,10)); //直接传递范围即可 document.write('
'); }

4.另外的简单整理下,一般用到的概率不太大
Math.abs(num) 返回num的绝对值
Math.exp(num) 返回Math.E的num次幂
Math.log(num) 返回num的自然对数
Math.pow(num,power) 返回num的power次幂
Math.sqrt(num) 返回num的平方根
Math.acos(x) 返回x的反余弦值
Math.asin(x) 返回x的反正弦值
Math.atan(x) 返回x的反正切值
Math.atan2(y,x) 返回y/x的反正切值
Math.cos(x) 返回x的余弦值
Math.sin(x) 返回x的正弦值
Math.tan(x) 返回x的正切值

es6新增的Math方法:
Math.trunc(num) 截取数字,只保留整数部分

Math.trunc(4.5)  ->  4
Math.trunc(4.9)  ->  4

Math.sign(num) 判断一个数到底是正数、负数、0

Math.sign(-5)  ->  -1表示负数
Math.sign(5)   ->  1 表示正数
Math.sign(0)   ->  0
Math.sign(-0)  ->  -0
Math.sign('abc')  ->    其他值,返回 NaN

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

Math.cbrt(27)  ->  3

ES2018(ES9):(以下部分了解即可,不熟悉正则可能比较难看懂)
1. 命名捕获
语法: (?<名字>)

之前做法演示:

let str = '2018-03-20';
let reg = /(\d{4})-(\d{2})-(\d{2})/;
let dateArr = str.match(reg);
let year = dateArr[1];
let month = dateArr[2];
let day = dateArr[3];
console.log(year, month, day);//2018 03 20

命名捕获方法实现:

let str = '2018-03-20';
let reg = /(?\d{4})-(?\d{2})-(?\d{2})/;
let {year, month ,day} = str.match(reg).groups;
console.log(year, month, day);//2018 03 20

反向引用:
\1 \2
2
反向引用命名捕获:
语法: \k<名字>

let reg = /^(?welcome)-\k$/;
let str3 = 'welcome-welcome';
console.log(reg.test(str3));//true
匹配: ‘welcome-welcome’

let reg = /^(?welcome)-\k-\1$/;
let str4 = 'welcome-welcome-welcome';
console.log(reg.test(str4));//true
匹配: 'welcome-welcome-welcome'

替换:
格式:$<名字>

let str = '2018-03-20';
let reg = /(?\d{4})-(?\d{2})-(?\d{2})/;
str = str.replace(reg,'$/$/$');
console.log(str);//20/03/2018
let str = '2018-03-20';
let reg = /(?\d{4})-(?\d{2})-(?\d{2})/;

str = str.replace(reg, (...args)=>{
    //console.log(args)
    let {year, month, day} = args[args.length-1];
    return `${day}/${month}/${year}`;
 });
console.log(str);//20/03/2018
let reg = /(?\d{4})-(?\d{2})-(?\d{2})/;
str =str.replace(reg,'$/$/$');
console.log(str);
str = str.replace(reg, (...args)=>{
    //console.log(args)
let {year, month, day} = args[args.length-1];
    return `${day}/${month}/${year}`;
});
console.log(str);

2. dotAll 模式 s

之前 '.' 在正则里表示匹配任意东西, 但是不包括 \n
let reg = /\w+/gims;

let reg = /^\w+.\w+$/;
let str = 'welcomeβ51mmr';
console.log(reg.test(str));//true

let reg = /^\w+.\w+$/s;
let str = 'welcome\n51mmr';
console.log(reg.test(str));//true
//加上s后就可匹配,去掉就是false

3. 标签函数

function fn(){
}

fn()  //这样调用就是普通函数
fn`aaa`  //标签函数使用

演示

function fn(args){
    console.log(args);
    return 1;
}
console.log(fn`welcome`);//0: "welcome" length: 1 raw: ["welcome"] __proto__: Array(0)

function fn(args){
    return args[0].toUpperCase();
}
console.log(fn`welcome`);//WELCOME

你可能感兴趣的:(es6笔记之十三-数字变化、Math新增、ES2018(ES9)新增)