ES6新特性

本文详细介绍了ECMAScript2015(ES6)的新特性,包括声明变量的let和const,数组和对象的解构,对象扩展如Object.assign、Proxy和Reflect,模版字符串,函数的默认参数和箭头函数,Class,Set和Map,以及Symbol和Iterator等。同时提到了ES2016和ES2017的重要更新。
摘要由CSDN通过智能技术生成

ECMAScript 和 Javascript 的关系

  • ES是JS的标准化规范
  • JS是ES的扩展语言(在ES的基础之上)
    • 浏览器环境中的JS = ES + Web APIs
    • Node环境中的JS = ES + Node APIs
  • JS本身指的就是ES

ECMAScript2015的新特性

ES6 特指ES2015,泛指ES5.1之后的所有版本

1.声明变量

  • let,块级作用域
  • const,常量
  • var,原有的变量声明方式

最佳实践:不用var,主用const,配合使用let

2.数组的解构

// 获取数组的每个元素
const arr = [11, 22, 33]

// 不使用解构
const a1 = arr[0]
const a2 = arr[1]
const a3 = arr[2]

// 使用解构
const [a1, a2, a3] = arr
console.log(a2)  //22

const [a1, a2, a3, a4] = arr
console.log(a4)  //undefined

// 剩余参数
const [a1, ...rest] = arr
console.log(rest)  //22, 33

// 默认值
const [a1, a2, a3, a4='default value'] = arr
console.log(a4)  //default value

3.对象的扩展

3.1 对象的解构

const obj = {
   name: 'flower', age: 18}

const {
   name, age} = obj
console.log(name, age)

// 重命名
const {
   name: myName} = obj
console.log(myName)

// 默认值
const {
   name: myName='box', age, sex='女'} = obj
console.log(myName, age, sex)  //flower 18 女

3.2 对象字面量增强

  • 属性简写
const name = 'Tom'
const obj = {
   
    name,  //属性名就是变量名,属性值是变量值
    age: 18
}
  • 方法简写
const obj = {
   
    fn: function(){
   
        //原来的写法
    },
    fnn(){
   
        //新的写法
    }
}
  • 计算属性

可以用表达式的值作为属性名,需要放在中括号里

const prop1 = 'x' 
const prop2 = 'y'
const obj = {
   
    [prop1]: 1,
    [prop2]: 2
}
obj  //{x: 1, y: 2}

3.3 对象新增方法

  • Object.assign(targetObj, …sourceObj)
    将多个源对象中的属性复制到目标对象,并返回目标对象
  • Object.is(a, b)
    判断两个值是否相等
0==false  //true
0===false  //false
+0 === -0  //true
NaN === NaN  //false

Object.is(+0, -0
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值