ES6字符串:和ES5的最大的区别在于对unicode编码大于0xFFF的的处理.
{
console.log('a','\u8861'); //没有超过0xFFF
console.log('s','\u20BB7'); //超过0xFFF所以分成4个字节,前面4个为一个,7为1个
console.log('s','\u{20BB7}'); //ES6写法 若当成一个unicode码要用{}
}
{
//ES5
let s='?';
console.log(s.length); //2个字符
console.log('0',s.charAt(0)); //取第一个字符
console.log('1',s.charAt(1)); //取第一个字符
console.log('00',s.charCodeAt(0)); //取码值55362
console.log('11',s.charCodeAt(1)); //取码值57271
console.log('ES5',String.fromCharCode('0x20bb7')); //乱了
// ES6写法 :codePointAt fromCodePoint
let s1='?a';
console.log(s1.codePointAt(0).toString()); //134071
console.log(s1.codePointAt(2).toString()); //97
console.log('ES6',String.fromCodePoint('0x20bb7')); //正常
}
{
let str ="helloWC";
console.log('includes', str.includes('lo')); //true //是否包含某字符串
console.log('startsWith' ,str.startsWith('he')); //true 是否以什么开始
console.log('endsWith', str.endsWith('Wc')); //false 以什么结束
console.log('repeat', str.repeat(2)); //helloWChelloWC 重复复制几次
}
//es6遍历字符串
{
let str="\u{20BB7}abc";
//ES5
for(let i=0;i<str.length;i++){
console.log('es5',str[i]);
}
//ES6
for(let code of str){
console.log('es6',code); //? a b c
}
}
//模板字符串 用 `${ } `包裹 ${ } 包裹变量名
{
let str="IIII";
let name="KO";
console.log('moban:', `Just ${str} and ${name}`);
}
//标签模板(这种写法)可以用来防止xss攻击,进行多语言转换
{
let user={
name:'list',
info:'hello'
};
console.log( abc`I am ${user.name} ${user.info}` );
function abc(s,v1,v2){
console.log('s',s);
console.log('v1',v1);
console.log('v2',v2);
return s+v1+v2;
}
}
//例子的\u20bb7是大于0xfff的,20bb算2个字节,7单独算1个字节
{
console.log('a','\u8861'); //没有超过0xFFF
console.log('s','\u20BB7'); //超过0xFFF所以分成4个字节,前面4个为一个,7为1个
console.log('s','\u{20BB7}'); //ES6写法 若当成一个unicode码要用{}
}
{
//ES5
let s='?';
console.log(s.length); //2个字符
console.log('0',s.charAt(0)); //取第一个字符
console.log('1',s.charAt(1)); //取第一个字符
console.log('00',s.charCodeAt(0)); //取码值55362
console.log('11',s.charCodeAt(1)); //取码值57271
console.log('ES5',String.fromCharCode('0x20bb7')); //乱了
// ES6写法 :codePointAt fromCodePoint
let s1='?a';
console.log(s1.codePointAt(0).toString()); //134071
console.log(s1.codePointAt(2).toString()); //97
console.log('ES6',String.fromCodePoint('0x20bb7')); //正常
}
{
let str ="helloWC";
console.log('includes', str.includes('lo')); //true //是否包含某字符串
console.log('startsWith' ,str.startsWith('he')); //true 是否以什么开始
console.log('endsWith', str.endsWith('Wc')); //false 以什么结束
console.log('repeat', str.repeat(2)); //helloWChelloWC 重复复制几次
}
//es6遍历字符串
{
let str="\u{20BB7}abc";
//ES5
for(let i=0;i<str.length;i++){
console.log('es5',str[i]);
}
//ES6
for(let code of str){
console.log('es6',code); //? a b c
}
}
//模板字符串 用 `${ } `包裹 ${ } 包裹变量名
{
let str="IIII";
let name="KO";
console.log('moban:', `Just ${str} and ${name}`);
}
//标签模板(这种写法)可以用来防止xss攻击,进行多语言转换
{
let user={
name:'list',
info:'hello'
};
console.log( abc`I am ${user.name} ${user.info}` );
function abc(s,v1,v2){
console.log('s',s);
console.log('v1',v1);
console.log('v2',v2);
return s+v1+v2;
}
}