ES6學(xué)習(xí)總結(jié)是自己在學(xué)習(xí)過程中的總結(jié)嚎幸,記筆記就是為了督促自己學(xué)習(xí)和復(fù)習(xí),好記性不如爛筆頭述寡。如果有錯(cuò)誤,感謝指出叶洞。
字符串?dāng)U展
有一些方法ES7提案鲫凶,需要安裝處理兼容的補(bǔ)丁庫,否則es6沒辦法編譯通過
npm install babel-polyfill --save-dev
import 'babel-polyfill';
Unicode表示方法
A 的unicode表示方法 \u0061
當(dāng)碼值大于兩個(gè)字節(jié)\U20BB7輸出的:□7衩辟,并沒有按一個(gè)字符來處理螟炫。
當(dāng)碼值大于兩個(gè)字節(jié),用大括號(hào)括起來
Unicode不區(qū)分大小寫
{
console.log('a',`\u0061`);
console.log('s',`\u20BB7`);//□7
console.log('s',`\u{20BB7}`);//?? 字符
}
{
let s='??';
console.log('length',s.length);//2
//因?yàn)??的碼值大于兩個(gè)字節(jié)艺晴,這時(shí)候就把他處理成4個(gè)字節(jié)了不恭??财饥,計(jì)算長度的時(shí)候每兩個(gè)字節(jié)就算是一個(gè)長度换吧。
//取第一第二個(gè)字符
//取第一第二個(gè)字符的unicode碼值
console.log('0',s.charAt(0));//亂碼
console.log('1',s.charAt(1));//亂碼
console.log('at0',s.charCodeAt(0));//55362
console.log('at1',s.charCodeAt(1));//57271
//es6處理
let s1='??a';
console.log('length',s1.length);//3
console.log('code0',s1.codePointAt(0));//134071 10進(jìn)制
console.log('code0',s1.codePointAt(0).toString(16));//20bb7
console.log('code1',s1.codePointAt(1));//57271 ??的最后兩個(gè)字節(jié)
console.log('code2',s1.codePointAt(2));//97(也就是a)
}
{
//能不能處理大于兩個(gè)字節(jié)的unicode字符
console.log(String.fromCharCode("0x20bb7"));
console.log(String.fromCodePoint("0x20bb7"));
}
字符串遍歷器接口
{
let str='\u{20bb7}abc';
for(let i=0;i<str.length;i++){
console.log('es5',str[i]);//亂碼 亂碼 a b c
}
for(let code of str){
console.log('es6',code);//for of可以遍歷大于0xfff的字符
// ?? a b c
}
}
實(shí)用方法
判斷字符串中是不是包含某些字符?
一個(gè)字符串是否是以某些字符為起始/截止的钥星?
字符串重置多次
{
let str="string";
console.log('includes',str.includes("c"));//判斷字符串是否包含給定字符(includes)
console.log('start',str.startsWith('str'));//判斷是否以給定字符開始(startsWith)
console.log('end',str.endsWith('ng'));//判斷是否以給定字符結(jié)束(endsWith)
}
模板字符串
不是單引號(hào)沾瓦,鍵盤數(shù)字1左側(cè)的按鍵
{
let name="list";
let info="hello world";
let m=`i am ${name},${info}`;
console.log(m);
}
ES7草案:判斷字符串長度是否夠,不夠補(bǔ)指定內(nèi)容
console.log('1'.padStart(2,'0'));//01
console.log('1'.padEnd(2,'0'));//10
標(biāo)簽?zāi)0?/h4>
{
let user={
name:'list',
info:'hello world'
};
console.log(abc`i am ${user.name},${user.info}`);
function abc(s,v1,v2){
console.log(s,v1,v2);
return s+v1+v2
}
}
{
let user={
name:'list',
info:'hello world'
};
console.log(abc`i am ${user.name},${user.info}`);
function abc(s,v1,v2){
console.log(s,v1,v2);
return s+v1+v2
}
}
用這個(gè)防xss攻擊谦炒,處理多語言轉(zhuǎn)換
String.raw
String.raw()方法贯莺,往往用來充當(dāng)模板字符串的處理函數(shù),返回一個(gè)斜杠都被轉(zhuǎn)義(即斜杠前面再加一個(gè)斜杠)的字符串宁改,對(duì)應(yīng)于替換變量后的模板字符串缕探。
String.raw`Hi\n${2+3}!`;
// "Hi\\n5!"
String.raw`Hi\u000A!`;
// 'Hi\\u000A!'
如果原字符串的斜杠已經(jīng)轉(zhuǎn)義,那么String.raw()不會(huì)做任何處理还蹲。