ES6 常用语法

一  什么是ES6?

  ECMAScript 6 简称ES6, 在2015年6月正式发布!!!

二 常用语法

  1.声明变量 const/let/var

    ES6以前用var来声明变量,存在变量提升现象---会提前创建变量

    作用域也只有全局作用域和函数作用域---所以变量提升会在函数顶部或者全局作用域顶部

  **********************************************************************************************************************

    let 关键字表示变量,const 表示常量,都是块级作用域,比如一个函数内部,或一个{}内部。

  var

    var定义的变量可以修改,如果不初始化会输出undefined,不会报错

1 var a = 1;
2 // var a;//不会报错
3 console.log('函数外var定义a:' + a);//可以输出a=1
4 function change(){  
5     a = 4;
6     console.log('函数内var定义a:' + a);//可以输出a=4
7 }
8 change();
9 console.log('函数调用后var定义a为函数内部修改值:' + a);//可以输出a=4

  const

    const定义的变量不可以修改,而且必须初始化

1 const b = 1;    //正确
2 const b;    //错误,必须初始化
3 console.log('函数外const定义b:' + b);/有输出值
4 //b = 5;
5 //console.log('函数外修改const定义b:' + b);//无法输出

  let

    let是块级作用域,函数内部使用let定义后,对函数外部无影响

1 let c = 3;
2 console.log('函数外let定义c:' + c);//输出c=3
3 funcion change(){   
4     let c = 6;
5     console.log('函数内let定义c:' + c);//输出c=6
6 }
7 change();
8 console.log('函数调用后let定义c不受函数内部定义影响:' + c);//输出c=3

  let、const 和var的区别

    let和var的一个明显的区别就是没有变量提升:

 1 function fun1(){
 2     for(var i = 0; i <= 10;i++){
 3         
 4     }
 5     console.log(i);//11;--------var变量提升
 6 };
 7 fun1();
 8 function fun2(){
 9     for(let i = 0; i <= 10;i++){
10         
11     }
12     console.log(i);//i is not defined;--------let没有变量提升
13 };
14 fun2();

       const和var的明显区别是,const声明的是常量,不可被后面的代码赋值改变:

1 var x = 1;
2 x = 2;
3 console.log(x);//2;-----var声明的是变量,可被赋值替换
4 
5 const y = 1;
6 y = 2;
7 console.log(y);//Assignment to constant variable.;------const声明的是常量,不可改变

  2.模板字符串

 1 <body>
 2     <div id="head">
 3     </div>
 4     <script>
 5         let ele=`
 6             <div id="head">
 7                 <h1>模板字符串</h1>
 8                 <p>动态添加</p>
 9             </div>
10             `;
11         let ele_div=document.getElementById('head');
12         ele_div.innerHTML=ele
13     </script>
14 </body>

  3.函数

    箭头函数,是函数的快捷写法,类比Python的匿名函数 lambda。

  最直观的三个特点

    -- 不需要function关键字来创建函数

    -- 省略return关键字

    -- 继承当前上下文的this关键字(因为箭头函数的调用者是当前上下文,跟普通函数区别开

 1 // 函数在哪里调用了 才决定this到底引用的是谁~~~
 2 // 最后一个调用函数的对象才是传到函数里的上下文对象this~~~
 3 
 4 console.log(this)
 5 
 6 function test() {
 7     console.log(this)
 8 };
 9 
10 let obj = {
11     a: 1,
12     test: test,
13 };
14 
15 let obj2 = {
16     b: 3,
17     obj: obj,
18 };
19 
20 obj.test();
21 test();
22 obj2.obj.test();

  4.import 和 export

    略

  5.数据解构

 1  const people = {
 2         name: "提莫",
 3         age: 2,
 4     };
 5     const {name, age} = people;
 6     console.log(name);
 7     console.log(age);
 8     
 9     const person = ["瑞文", "刀妹"];
10     const [name1, name2] = person;
11     console.log(name1);
12     console.log(name2)

  6.class / extends / super   

    ES6 引入了关键字class来定义一个类,constructor是构造方法,this代表实例对象

  类之间通过extends继承,继承父类的所有属性和方法。

  super关键字,它代指父类的this对象,子类必须在constructor中调用super()方法,

  否则新建实例时会报错,因为子类没有自己的this对象。调用super()得到this,才能进行修改。

 1 class Animal{
 2     constructor(){
 3         this.type = "animal"
 4     }
 5     says(say){
 6         console.log(this.type + "says" + say )
 7     }
 8 }
 9 
10 let animal = new Animal()
11 
12 animal.says("hello")
13 
14 class Dog extends Animal{
15     constructor(){
16         super();
17         this.type = "dog";
18     }
19 }
20 
21 let dog = new Dog()
22 dog.says("hello")
原文地址:https://www.cnblogs.com/wdbgqq/p/9833021.html