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