数字(数值)变化:
二进制: (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 =253-1;
Number.isSafeInteger(a); //true
Number.MAX_SAFE_INTEGER 最大安全整数 就是253-1;
Number.MIN_SAFE_INTEGER 最小安全整数 就是-(253-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('<br />');
}
为了更加方便的传递想要范围,可以写成函数:
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('<br />');
}
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 = /(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})/;
let {year, month ,day} = str.match(reg).groups;
console.log(year, month, day);//2018 03 20
反向引用:
\1 \2
2
反向引用命名捕获:
语法: \k<名字>
let reg = /^(?<Strive>welcome)-\k<Strive>$/;
let str3 = 'welcome-welcome';
console.log(reg.test(str3));//true
匹配: ‘welcome-welcome’
let reg = /^(?<Strive>welcome)-\k<Strive>-\1$/;
let str4 = 'welcome-welcome-welcome';
console.log(reg.test(str4));//true
匹配: 'welcome-welcome-welcome'
替换:
格式:$<名字>
let str = '2018-03-20';
let reg = /(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})/;
str = str.replace(reg,'$<day>/$<month>/$<year>');
console.log(str);//20/03/2018
let str = '2018-03-20';
let reg = /(?<year>\d{4})-(?<month>\d{2})-(?<day>\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 = /(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})/;
str =str.replace(reg,'$<day>/$<month>/$<year>');
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