ES6

作者: 辞苏 | 来源:发表于2018-06-02 11:05 被阅读0次

    ##ES6

    ### 一、解构赋值

      ES6允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为结构赋值,解构赋值主要包括数组的结构赋值、对象的结构赋值、字符串的结构赋值、函数参数的结构赋值。

    **数组的解构赋值**

    代码如下

    ```js

    //传统赋值

    var num1=1;

    var num2=2;

    var num3=3;

    //结构赋值

    let [str1,str2,str3]=['aa','bb','cc'];

    console.log(str1);

    console.log(str2);

    console.log(str3);

    ```

    **对象的解构赋值**

    代码如下:

    ```js

     let {num1,num2}={num1:100,num2:10};

     console.log(num1);

     console.log(num2);

    ```

    **字符串的解构赋值**

    代码如下:

    ```js

    let [a,b,c,d,e]='hello';

    console.log(a);

    console.log(b);

    console.log(c);

    console.log(d);

    console.log(e);

    ```

    **函数参数的解构赋值**

    代码如下

    ```js

    function fn([x,y]){

    return x+y;

    }

    console.log(fn([10,20]));

    ```

    解析:由于平时传入的参数x,y作为变量进行传入,加上“[ ]”表示以一个数组的形式进行传入参数,在调用函数的同时也是同样。

    **调换两个数的值**

    之前的写法

    ```js

    var a=3;

    var b=5

    var c;

    交换两个数的值:声明第三个变量

     c=b;

     b=a;

     a=c;

     //使用es6语法

     let num1=10;

     let num2=20;

     [num1,num2]=[num2;num1];

     console.log(num1);

     console.log(num2);

    ```

    ###模板字符串

    **多行字符串**

    用单引号或是双引号表示的字符串在编辑的过程中只能在一行显示,若要在多行显示需要在每一行结尾添加一个斜杠,这样的编辑方式对开发者显然不够友好,我们可以使用模板字符串的功能换行编辑字符串,代码如下所示

    ```js

    let str=`hello

         world

         `;

         console.log(str);

    ```

    **字符串中定义变量**

    es5写法

    ```js

    var name='jack';

    console.log('我的名字叫'+name);

    ```

    模版字符串

    ```js

    var name='jack';

    console.log(`我的名字叫${name}`);

    ```

    **模板字符串调用函数**

    let x='hello';

    let y='world';

    function fn(x,y){

    return x+y;

    }

    console.log('程序猿最常说的一句话是${fn(x,y)}');

    ###函数

    在ES2015中扩展了很多函数的功能,我们在本节讲解两个最常用的功能:

    * 设置函数参数默认值

    * 箭头函数

    **参数默认值**

    在ES2015版本之前,我们可以通过下面的方法设置函数参数的默认值,代码如下所示

    ```js

    es5设置默认值

    function fun(x,y){

       x=x||10;

       y=y||20;

       return x+y;

    }

    console.log(fun());

    ```

    如果逻辑或运算符的左侧是undefined,那么表达式的值就是右侧的值,如果左侧不是undefined,那么表达式的值就是左侧的值,我们可以通过这种方法设置函数参数的默认值,但是这种方法看上去并不是那么友好,所以ES2015为函数增加了设置默认值的功能。代码如下所示

    ```js

    //es6设置默认值

    function fn(x=100,y=200){

    return x+y;

    }

    console.log(fn(1,2));

    ```

    **箭头函数**

    在ES2015中增加了箭头函数的语法,我们可以使用=>来定义函数,而不必每次都要写一个function。具体写法如下所示

    ```js

    var fun=x=>x*x;

    console.log(fun(6));

    ```

    箭头的前面是函数的参数,箭头的后面是函数的返回值,程序运行后会在控制台输出36。

    如果函数没有参数,并且函数体不止一行代码,可以用如下的代码表示

    ```js

    let fun=()=>{

    var x=10;

    var y=20;

    return x+y;

    }

    console.log(fun());

    ```

    ###面向对象语法

    在ES2015版本之前,JavaScript是没有类的概念的,我们可以使用构造函数来模拟一个类,这在我们之前的课程中已经讲解过了,这里我们简单复习一

    创建一个猫的构造函数

    ```js

    function Cat(name,age){

    this.name=name;

    this.age=age

    }

    var cat=new Cat('miaomiao',2);

    console.log(cat.name);

    ```

    在上面的代码中,我们定义了一个构造函数Cat,通过new关键字创建了一个变量cat,cat有两个属性,name和age。我们可以直接输出cat.name;

    我们可以通过原型属性为构造函数添加方法,例如我们给这个Cat添加一个shout方法,让这只猫可以叫。代码如下所示

    ```js

    function Cat(name,age){

    this.name=name;

    this.age=age

    }

    var cat=new Cat('miaomiao',2);

    Cat.prototype.say=function(){

    console.log('喵喵喵!');

    }

    console.log(cat.name);

    cat.say();

    ```

    通过上面的代码,我们可以模拟一个类的概念,但是这样的写法与真正面相对象语言的写法相比,确实更难以理解。所以ES2015中增加了类的概念。

    **class**

    我们可以用class来定义一个类,然后可以在这个类中定义构造函数,方法和属性。代码如下

    ```js

    class Cat{

    constructor(name,age){

    this.name=name;

    this.age=age;

    }

    shot(){

    console.log('喵喵喵');

    }

    }

    let cat=new Cat('miaomiao',2);

    cat.shot();

    ```

    相关文章

      网友评论

          本文标题:ES6

          本文链接:https://www.haomeiwen.com/subject/bexrsftx.html