ES6新增

本文介绍了ES6中的一些重要特性,包括let和const关键字的变量声明,箭头函数的简洁写法,函数参数的默认值,模板字符串的使用,解构赋值在对象和数组中的应用,展开运算符和合并运算符的功能,以及Map和Set数据结构。此外,还讨论了for...of循环的特点和类与继承的概念。
摘要由CSDN通过智能技术生成

1.变量

let关键字

不允许重复声明

没有与解析

let定义变量会自己创建一个作用域,将自己的作用域限制在大括号中

const关键字

不能改变值

声明必须赋值

2.箭头函数

用来简写函数

例:使用箭头函数定义一个返回m到n范围内的随机数的函数:

let fn = (m,n) => parseInt(Math.random()*(n-m+1))+m;

3.函数默认值

以前的函数不能有默认值,es6的函数中可以定义默认值:

let add = (a,b=2) => a+b;
console.log(add(5));

4.模板字符串

es6新增了定义字符串的方式,使用反引号

  1. 可以换行书写,保持字符串中的换行和空格

  2. 模板字符串中可以识别变量,使用美元符大括号:${变量}

`${变量}`

5、解构赋值

解析一个数据结构并赋值,可以快速的从对象或数组中取出需要的内容,对象使用大括号,数组使用中括号 

     5.1解构对象

let obj = {
    name:"张三",
    age:12,
    sex:"男",
    wife:{
        name:"翠花",
        age:11,
    }
}

let {name:uname,age:a} =  obj  

console.log( {name:uname,age:a} ); // 张三,12
let {wife} = obj; //name: "翠花"
let {name} = wife; // wife: {name: '翠花', age: 11}
// 写为一行
let {wife:{name:wname}} = obj; //

  1. wife:
    1. name: "翠花"

5.2、解构数组

let arr = [1,2,3];
let [num1] = arr; // 从数组中拿出第一个元素赋值给num1变量

解构数组的时候是按顺序取出数组中的值,解构一个变量,只能拿到第一个元素

let arr = [1,2,3];
let [num1,num2] = arr; // num1 = arr[0]   num2 = arr[1]

多维数组解构:

let arr = [1,2,3,[4,5,6]];
let [a,b,c,[aa,bb]] = arr;
console.log(aa,bb); // 4 5

利用结构交换两个变量的值:

let num1 = 1;
let num2 = 2;
[num2,num1] = [num1,num2]

6、展开运算符

将一个数组展开为多个变量赋值给多个形参

let arr = [1,2,3];
function fn(a,b,c){
    console.log(a,b,c); // 1 2 3
}
fn(...arr);

利用展开运算合并数组

// 之前的写法
let arr = [1,2,3];
let arr1 = [4,5,6].concat(arr);
// 利用展开运算合并
let arr2 = [4,5,6].concat(...arr);
// 再简化
let arr3 = [4,5,6,...arr]

利用展开运算合并对象:

const obj = {
    name:"Jack",
    age:20,
    sex:"男",
}
const obj1 = {
    ...obj,
    wife:{
        name:"Rose",
        age:18
    }
}
console.log(obj1); //

  1. Object
    1. age: 20
    2. name: "Jack"
    3. sex: "男"
    4. wife: {name: 'Rose', age: 18}

7、合并运算符

将多个实参合并为一个数组

function fn(...arr){
    console.log(arr);
}
fn(1,2,3); // [1,2,3]

箭头函数中没有arguments,可以使用合并运算符来模拟arguments

var fn = (...arr) => {console.log(arr)};
fn(1,2,3); // [1,2,3]

8、对象的简写方式

let name = '张三';
let age = 12;
let obj = {
    name,
    age
}
console.log(obj);//

  1. Object
    1. age: 12
    2. name: "张三"

如果对象的属性名和变量名同名,则可以光写属性名

9、Map

map是es6提供的一种对象类型,用于存储键值对。跟object不同的地方在于:

  • object键值对:字符串->值

  • map键值对:值->值

定义map数据: var m = new Map()

10、Set

set是es6新增的一种对象类型,用于存储多个键。也就是说,set数据中不会有重复的数据。

定义语法:new Set([多个数据])。定义语法使用[],如果[]中重复的数据,会被set去重。

11、for...of

for in用来遍历键。可以遍历的数据如下:

  • 可以遍历object类型,只要类型是object就能遍历,但能遍历的只有可遍历/可枚举的属性,(也就是enumerable属性为true的属性);

  • 可以遍历数组,但遍历出来的下标是字符串,遍历数组的时候会将数组的下标作为键

  • 可以遍历字符串,遍历出来的下标也是字符串

  • 如果对象的原型中有可遍历的属性,会将原型中的可遍历属性也遍历出来。如果原型中的可遍历属性和对象本身的可遍历属性重名,就只遍历对象本身的属性了。

for of用来遍历值。可以遍历的数据如下:

  • 可以遍历数组,遍历出来的是数组中的每个元素

  • 可以遍历字符串,遍历出来的是字符串中的每个字符

  • 可以遍历set集合。

  • 可以遍历Map集合

  • 不可以遍历对象

12、ES6的类

ES6中定义类的语法: class 类的名字{}  

类只有一个作用,就是定义对象,定义对象的语法:

var 对象 = new 类

类的本质,其实还是一个函数,只是换了一种形式,这种形式只能用来定义类,而不能当做构造函数调用了。

此时对象是空对象,要给对象中添加属性,就要在类中定义:

class 类的名字{
    属性名 = 值 // 方法1
    // 方法2
    constructor() {
        this.属性名 = 值
    }
}

在new类的时候,传递的实参,其实是传递给了constructor,contructor方法只会在new类的时候执行一次。

13、ES6的继承

在ES6的类中定义的对象,实现继承有继承的语法:

class 子类 extends 父类{}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值