一些简单的ES6语法

let 和 const

let 和var的区别
  • (当前作用域下)不进行变量提升,但是在代码执行之前要进行声明,不进行提升(let声明的变量虽然不会进行变量提升,但是在形成作用域后代码执行之前,let声明的变量会有一个查重的机制)
  • 当前作用域下let声明的变量不能重名
  • let声明的变量和window键值对没有映射关系
  • 在for循环中,用let定义的i,每循环一次,都会保存一个i的值在当前子作用域

Set数据结构

  • set数据结构是es6中新增的一种数据结构:类似于数组,但是其成员都是唯一的
  • set的参数必须是可以遍历的
let set = new Set(1);
console.log(set)//=>Uncaught TypeError: number 1 is not iterable (cannot read property Symbol(Symbol.iterator))
意思是数字1不是可遍历的。
  • 向set数据末尾新增一项(只能是一项,如果有多个参数,他不会报错,但是只能添加第一个参数对应的数)
let a = new Set([1,2]);
console.log(a)//Set(2) {1, 2}
a.add(3);
console.log(a)//Set(3) {1, 2,3}
  • 获取set成员的个数
let a = new Set([1,2]);
console.log(a.size)//=>2
  • 删除set成员项(一次只能删除一个,如果参数是多个,他不会报错,但是每次只能删除参数的第一个)返回值为boolean。
let set = new Set([1,2,3]);
set.delete(1,2);//=>true
console.log(set)//=>Set(2){2,3}
  • 判断该成员是否在set结构中(返回值是boolean)
let set = new Set([1,2,3])
set.has(3)//=>true
  • 用es6中的…将set结构转换成数组
let set = new Set([1,2,3])
let ary =[...set]//=>[1,2,3]
  • 用set实现数组去重(原数组不变)
let ary = [1,1,2,2,3,3];
let set = new Set(ary);
let newAry =[...set];//=>[1,2,3]

函数新增的特征

  • es6中形参可以设置默认值
  • 当函数有实参的时候,会覆盖默认值
  • 函数执行时,没有实参,会取默认值
  • 实参为undefined时,不会覆盖默认值(可以用这个占位)
  • 一旦设置了参数的默认值,函数进行声明初始化时,参数会形成一个单独的作用域(context)。等到初始化结束,这个作用域就会消失。这种语法行为,在不设置参数默认值时,是不会出现的。
function fn(x = 100, y = 200) {
            console.log(x);
            console.log(y);
        }
        fn(1, 2);//有实参的时候,会覆盖默认值  1,2
        fn();//没有实参的时候,会取默认值 100,200
        fn(undefined);//实参为undefined,不改变默认值(还是会取默认值,可以用这个占位)100,200
        fn(undefined, 400)//100,400
        //和解构赋值一起用
        function f([x, y]) {
            console.log(x, y)
        }
        f([1, 2]);//1 2
        function f1([x, y = 3]) {//y=3为默认值
            console.log(x, y)
        }
        f1([1]);//1 3

解构赋值

  • 数组按照数组成员的顺序进行解构
  • 对象按照对象的属性名进行解构
  • 不论是字符串的解构还是数组还是对象的解构,等号两边的结构必须是一样的,否则解构失败

数组中新增的属性和方法

  • Array.from();将类数组或者是类数组对象转化成标准的数组
let obj = { '0': 1, '1': 2, length: 2 };
console.log(Array.from(obj));//=>[1,2]
  • Array.of();将对应的参数转换成数组(不管参数有多少,都会转换成对应的数组,包括没有参数的时候,他会返回[])
console.log(Array.of(1, 2, 3, 4));//=>[1,2,3,4]
console.log(Array())//一个参数的时候代表的是数组长度,两个以上才是数组成员项

箭头函数

箭头函数和普通函数的区别

定义时的区别

  • 没有function关键字;并且形参和{}之间要有箭头;
  • 如果形参只有一个,可以省略形参的小括号,两个以上或者是没有参数,都需要加上()
  • 如果{}中只有一条语句时,可以省略{}
  • 如果函数体只有return一条语句时,可以把{}和return都省略
  • 如果return出一个对象时,需要在对象的大括号外面加上小括号

执行时的区别

  • 箭头函数中没有this,他的this是继承当前上下文中的this(和他在哪执行没有关系,和他在哪定义有关,所以不能使用call、apply、bind改变箭头函数中的this指向)
  • 箭头函数中不能使用arguments
  • 箭头函数不能作为构造函数(类)
  • 不可以使用yield命令,不能作为Generator函数

Class

  • 在es6中定义一个类
 //class:在ES6中用来定义一个类
       class Fn {
           constructor() {
               //constructor中是往私有属性上新增方法
               this.a = 100;
           }
           //共有属性
           // 这个getX()是一个普通的函数
           getX() {
               console.log(this.a)
           }
       }
       console.log(new Fn);
  • extends 用来继承
class B extends A {
            //类B继承类A
            //class继承,继承了私有和公有属性
            constructor(c) {
                super(c);//调用父类构造器;继承了父类身上的属性和方法
                this.b = 100;//添加私有属性
            }
            //公有属性
            getY() {

            }
        }
        console.log(new B(200));
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值