1.es6强制开启严格模式

2.let不能重复声明变量

3.const声明的常量不能修改

4.const声明时候,对象可以改变,指针不行

5.解构赋值分为数组解构赋值,函数参数解构赋值,对象解构赋值

(a)数组解构赋值:

{
let a,b,rest;
[a,b,...rest]=[1,2,3,4,5,6];
console.log(a,b,rest);
}

...截取3456

(b)对象解构赋值:

{
let a,b;
({a,b}={a:1,b:2})
console.log(a,b);
}

解构赋值特别适合变量交换(区别于es5还需要一个中间量),如下

{
let a =1;
let b =2;
[a,b]=[b,a];
console.log(a,b);
}

(c)函数解构赋值:

{
function f(){
return [1,2,3,4,5]
}
let a,b,c;
[a,,,b]=f();
console.log(a,b);
}

可以随心所欲的取自己想取的值

(d)对象解构赋值

{
let a,b;
({a,b}={a:1,b:2})
console.log(a,b);
}


{
let o ={p:42,q:true};
let {p,q}=o;
console.log(p,q);
}

对象解构赋值的左侧是对象形式,右侧也是一个对象形式

 

正则方法拓展:

正则新增的特性:u修饰符,y修饰符,s修饰符

flags是es6新增的获取正则修饰符的属性

新增了sticky属性,判断有没有开始带y的修饰符,开启了就是true.

 

都是全局匹配,但是g修饰符中间任何位置匹配上都算。
y修饰符必须从第一个开始

u修饰符——处理大于两个字节的字符

 

 

字符串扩展:

Unicode表示法、遍历接口、模板字符串

 

判断字符串是否包含
{
let str ="string";
console.log("includes",str.includes("r"));//true
console.log("includes",str.includes("c"));//false

判断字符串以某些字符起始/结尾
console.log("start",str.startsWith("str"));
console.log("end",str.endsWith("ng"));

}

{
let str="abc";
console.log(str.repeat(2));
字符串的复制功能
}

 

模板字符串

{
let name="list";
let info="my love";
let m =`i am ${name},${info}`;
console.log(m);
}

 

//标签模板
//作用1 过滤字符串 防止xss***
//作用2 处理多语言转换

 

raw 对所有的斜杠进行了转义 保证了斜杠不生效

{
console.log(String.raw`Hi\n${1+2}`); //Hi\n3
console.log(`Hi\n${1+2}`); //hi
//3
}