ES6新特性

ES6新增的语法有哪些 http://es6.ruanyifeng.com/

  1. let 和 const
  2. 块级作用域
  3. 解构赋值
  4. 箭头函数
  5. promise
  6. class定义类
  7. Set 去重 因为set不能有重复项
  8. for of 遍历数组 不能循环对象

1、let和const

1、let和const没有变量提升。var有变量
2、let和const不能重复声明,var可以(在一个函数里面,let a 上方不能有a )

var是ES5提出的,let和const是ES6提出的。

const声明的是常量,必须赋值
1)一旦声明必须赋值,不能使用null占位。
2)声明后不能再修改
3)如果声明的是复合类型数据,可以修改其属性

  1. let和var声明的是变量,声明之后可以更改,声明时可以不赋值

  2. var允许重复声明变量,后一个变量会覆盖前一个变量。let和const在同一作用域不允许重复声明变量,会报错。

  3. var声明的变量存在变量提升(将变量提升到当前作用域的顶部)。即变量可以在声明之前调用,值为undefined。
    let和const不存在变量提升。即它们所声明的变量一定要在声明后使用,否则报ReferenceError错。

  4. var不存在块级作用域。let和const存在块级作用域。

  5. ES5中作用域有:全局作用域、函数作用域。没有块作用域的概念。

  6. ES6(简称ES6)中新增了块级作用域。块作用域由 { } 包括,if语句和for语句里面的{ }也属于块作用域。

2.数组解构赋值

  1. 在数组中,解构是一一对应的;如果只有变量,右边没有对应的值,那么默认解构出undefined
  2. 被解构的值(右边)一定是可遍历的 (右边是[] {})
    let [foo]=1; let[f]=null;
  3. 解构赋值允许赋默认值
    let [a,b=“x”]=[1];console.log(b);

3. 对象的解构赋值

1.对象是按照对象的属性名进行匹配和解构的,必须保证属性名一致;
2.如果等号右边没有对应的属性值,解构出undefined;
3.如果右边等于undefined,那么不会给左边赋值;
let {sex = 1} = {sex:undefined}
console.log(sex); //1

4.函数解构赋值

function fn([x,y=0]=[4,4]){
console.log(x,y); //2 0

}
fn([2])

function fn([x,y]){
console.log(x,y);// 2 undefined

}
fn([2])

5. Array.from: 将类数组集合转成真正的数组

Array.of : 将一组数转成数组

6.扩展运算符(实参)

let arr =[12,2];
let arr1 = [100,200];
console.log([…arr,…arr1]) [12,2,100,200]

7.剩余运算符// 将多余的值收缩成一个数组; 形参

function sum(m,…ary,n){ 会报错 …ary有变量接收会报错
m=10 …ary=[2,2]
sum(10,2,2,8)

8. 箭头函数

1、箭头函数没有this
2、没有arguments
3、如果在箭头函数里使用this,那他就会往上一级作用域查找this
7. 不能作为构造函数,不能被new
8. 不能被generation函数
4、如果只有一个形参,可以去掉小括号
5、如果只有return一行代码,可以省略return和大括号
6、如果return的是一个空对象,你要是省略的话,就给空对象加小括号

9. 块级作用域

if else for while try catch

10.set

Set 去重 因为set不能有重复项

let ary = new Set([1,2,3,4,5])
for(var key of ary){
    console.log(key);    //一个一个出来是数组里的每一项
}

 let arr = [1, 2, 3, 4, 5, 1, 2, 3];
    let ary = new Set(arr);
    console.log([...ary])   // 变成数组   用点点点展开
    console.log(ary);    //new之后会成为实例 ,实例是对象

11.for of

   let ary = [1,2,3,4,5,66];
  let obj = {a:1,b:2};
  for(let key of ary){
      console.log(key); //代表数组每一项
  }

  let ary = [100,200,300,400];
 for(let key of ary.keys()){
    console.log(key);//循环数组索引  
 }

  let ary = [100,200,300,400];
 for(let key of ary.values()){
    console.log(key);//数组每一项  
 }

  let ary = [100,200,300,400];
 for(let key of ary.entries()){
    console.log(key);//  [0 : 100]   索引 : 所对应的那项
 }

数组新增方法:some every filter reduce …
对象新增方法: Object.assign() Object.values() Object.keys() Object.create()…

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值