解構賦值應用場景:正則表達式
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