解构赋值应用场景:正则表达式
1.交换变量:数组
let a=1; let b=2; [a,b]=[b,a]; console.log(a,b); //2,1
2.获取对应参数spa
let metaData={ title:'abc', test:[{ title:'test', desc:'description' }] } let {title:esTitle,test:[{title:cnTitle}]}=metaData; console.log(esTitle,cnTitle); //abc,test
正则表达式:code
修饰符y:blog
下一次执行,从上一次匹配以后的字符的下一个开始。ip
let s="bbb_bb_b"; let a1=/b+/y; a1.exec(s);//输出'bbb' a1.exec(s);//输出null 由于会从'bbb'以后的'_'开始匹配
修饰符g:字符串
下一次执行,从找到符合的字符开始,或没有找到string
let s="bbb_bb_b"; let a1=/b+/g; a1.exec(s);//输出'bbb' a1.exec(s);//输出'bb' 会跳过'_',从下一个'b'开始查找匹配的字符
字符串:it
let str='string'; console.log('include',str.includes("q")); //false 字符串中是否包含 console.log('start',str.startsWith('str')); //true 字符串是否以'str'开头 console.log('end',str.endsWith('ing')); //true 字符串是否以'ing'结尾
字符串复制:io
let str="abc"; console.log(str.repeat(3)); //输出 abcabcabc
字符串补白:
console.log('1'.padStart(2,'0')); //输出01,应用场景:时间=>当不足10时,在前面补‘0’ console.log('1'.padEnd(2,'0')); //输出10,向后补
保留转义字符'\':
console.log(String.raw`Hi\n${1+2}`); //Hi\n3 console.log(`Hi\n${1+2}`); //Hi // 3
数值扩展:
console.log(0b11111100111); //2023 二进制形式 console.log('B',0B11111100111);//B 2023 console.log(0o767); //503 八进制形式 //是否有限 console.log('15',Number.isFinite(15)); //15 true console.log('NaN',Number.isFinite(NaN)); //NaN false console.log('1/0',Number.isFinite('true'/0)); //1/0 false console.log('NaN',Number.isNaN(NaN)); //是否是NaN console.log('0',Number.isNaN(0)); //是否是整数 console.log('25',Number.isInteger(25)); //15 true console.log('25.0',Number.isInteger(25.0)); //25.0 true console.log('25.1',Number.isInteger(25.1)); //25.1 false console.log('asd',Number.isInteger('asd')); //asd false console.log(Number.MAX_SAFE_INTEGER);//9007199254740991 数的上限 console.log(Number.MIN_SAFE_INTEGER);//-9007199254740991 数的下限 console.log('10',Number.isSafeInteger(10));//10 true 是否在有效范围以内 console.log('a',Number.isSafeInteger('a')); //a false console.log(4.1,Math.trunc(4.1));//4.1 4 取整 console.log(4.9,Math.trunc(4.9));//4.9 4 //判断正负 console.log('-5',Math.sign(-5)); //-5 -1 console.log('0',Math.sign(0)); //0 0 console.log('5',Math.sign(5)); //5 1 console.log('51',Math.sign('51')); //51 1 console.log('a',Math.sign('a')); //a NaN //立方根 console.log('-1',Math.cbrt(-1)); //-1 -1 console.log('8',Math.cbrt(8)); //8 2
数组扩展:
let arr=Array.of(3,4,7,9,11); console.log('arr=',arr); //arr= [3, 4, 7, 9, 11] let empty=Array.of(); console.log('empty',empty); //empty [] let p=document.querySelectorAll('p'); let pArr=Array.from(p); pArr.forEach(function(item){ console.log(item.textContent); });//输出各个p标签的内容 console.log(Array.from([1,3,5],function(item){return item*2}));//[2,6,10] console.log('fill-7',[1,'a',undefined].fill(7)); //[7,7,7] console.log('fill,pos',['a','b','c'].fill(7,1,3)); //["a",7,7] console.log('fill,pos',['a','b','c','a','b','c'].fill(7,1,3)); //["a", 7, 7, "a", "b", "c"] for(let index of ['1','c','ks'].keys()){ console.log('keys',index); }//0 1 2 for(let value of ['1','c','ks'].values()){ console.log('value',value); }//1 c ks for(let [index,value] of ['1','c','ks'].entries()){ console.log('value',index,value); }//0 1,1 c,2 ks console.log([1,2,3,4,5].copyWithin(0,3,5));//[4, 5, 3, 4, 5] console.log([1,2,3,4,5,6].find(function(item){return item>3}));//4 console.log([1,2,3,4,5,6].findIndex(function(item){return item>3}));//3 console.log('number',[1,2,NaN].includes(1));//true console.log('number',[1,2,NaN].includes(NaN));//true