zoukankan      html  css  js  c++  java
  • 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")
  • 相关阅读:
    matplotlib 进阶之origin and extent in imshow
    Momentum and NAG
    matplotlib 进阶之Tight Layout guide
    matplotlib 进阶之Constrained Layout Guide
    matplotlib 进阶之Customizing Figure Layouts Using GridSpec and Other Functions
    matplotlb 进阶之Styling with cycler
    matplotlib 进阶之Legend guide
    Django Admin Cookbook-10如何启用对计算字段的过滤
    Django Admin Cookbook-9如何启用对计算字段的排序
    Django Admin Cookbook-8如何在Django admin中优化查询
  • 原文地址:https://www.cnblogs.com/wdbgqq/p/9833021.html
Copyright © 2011-2022 走看看