ES6新特性详解

简介:

1.变量声明const和let

①let 和const都是块级作用域,并且都不会有变量提升

②const声明的变量都会被认为是常量,不能被修改,但如果被const修饰的是对象,对象中的属性值可以被修改

看一道简单的题目

var funcs = []
 for (var i = 0; i < 5; i++) {
 funcs.push(function() { console.log(i) })
 }
 funcs.forEach(function(func) {
 func()
})

输出结果显而易见是输出五个5,但如果想输出0~9应该怎么做呢?看下ES5和ES6分别怎么做

// ES5告诉我们可以利用闭包解决这个问题 var funcs = []
for (var i = 0; i < 5; i++) {
 funcs.push(
 (function(value) {
 return function() {
 console.log(value)
 }
 })(i)
 )
}
funcs.forEach(function(func) {
 func()
})
//ES6中只需要使用let const funcs = []
for (let i = 0; i < 10; i++) {
 funcs.push(function() {
 console.log(i)
 })
}
funcs.forEach(func => func())

2.模板字符串

第一个用途,基本的字符串格式化。将表达式嵌入字符串中进行拼接。用${}来界定

//ES5  var name = 'lili' console.log('hello' + name)
//es6 const name = 'lili' console.log(`hello ${name}`) //hello lili

第二个用途,在ES5时我们通过反斜杠(\)来做多行字符串拼接。ES6反引号(``)直接搞定。

// ES5 var msg = "Hi \
man!
" // ES6 const template = `<div>
 <span>hello world</span>
</div>`

对于字符串ES6当然也提供了很多厉害也很有意思的方法

const str = 'hahay' console.log(str.includes('y')) // true const str = 'he' console.log(str.repeat(3)) // 'hehehe' const str = 'hello world!' console.log(str.startsWith('hello')) // true console.log(str.endsWith('!')) // true

3.函数

函数默认参数

//es5 function action(num) {
 num = num || 200 return num
}
//es6 function action(num = 200) {
 console.log(num)
}

箭头函数

//es6
[1,2,3].map(x => x + 1)
 
//es5
[1,2,3].map((function(x){
 return x + 1
}).bind(this))

4.拓展的对象功能

键值对简写

//es5 function people(name, age) {
 return {
 name: name,
 age: age
 };
}
//es6 function people(name, age) {
 return {
 name,
 age
 };
}
//方法同样适用 //es5 const people = {
 name: 'lux',
 getName: function() {
 console.log(this.name)
 }
}
//es6 const people = {
 name: 'lux',
 getName () {
 console.log(this.name)
 }
}

浅拷贝Object.assign()

const objB = { address: 'beijing' }
const objC = {} // 这个为目标对象 const obj = Object.assign(objC, objB)

console.log(objB) // { address: 'beijing' } console.log(objC) // { address: 'beijing' } console.log(obj) // { address: 'beijing' } //obj为 objC的浅拷贝 //虽然assign被定义为浅拷贝,但是第一个参数传入{}可以达到深拷贝的效果 const objB = { address: 'beijing' }
const obj = Object.assign({}, objB)

console.log(objB) // { address: 'beijing' } console.log(obj) // { address: 'beijing' }
此时obj为objB的深拷贝

5.解构

 var people = {
 name: 'lux',
 age: 20
}
//es5 var name = people.name
var age = people.age
//es6 const {name, age} = people

//数组同样适用 var arr = [1,2,3];
const {one, , three} = arr;

6.Spread Operator 展开运算符

//数组 const color = ['red', 'yellow']
const colorful = [...color, 'green', 'pink']
console.log(colorful) //[red, yellow, green, pink] //对象 const alp = { fist: 'a', second: 'b'}
const alphabets = { ...alp, third: 'c' }
console.log(alphabets) //{ "fist": "a", "second": "b", "third": "c" 

7.import 和 export

8. Promise

9.Generators

原文发布时间:2018-07-03
原文作者:kimyeongnam
本文来源 掘金如需转载请紧急联系作者
相关文章
|
1月前
|
JavaScript 前端开发 开发者
ES6的常用新特性17条
ES6,也称为ECMAScript 2015,是JavaScript语言的一个重大更新,它引入了许多新的语法特性。以下是ES6的一些主要语法
|
16天前
|
JavaScript 前端开发 开发者
es6的新特性
es6的新特性
20 7
|
8月前
|
存储 JavaScript 前端开发
ES6新特性
ES6新增特性详细内容
|
8月前
|
JavaScript 前端开发 网络架构
关于ES6新特性的总结 1
关于ES6新特性的总结
31 0
|
3月前
|
JavaScript
ES6 新特性 ES6使用 超实用
ES6 新特性 ES6使用 超实用
|
4月前
|
前端开发
ES6 部分新特性使用
ES6 部分新特性使用
13 0
|
7月前
|
JavaScript 前端开发 开发者
ES6 新特性
这是每个前端开发者都应该掌握的技能。ES6是JavaScript的一个重要的版本升级,它带来了许多新特性和语法糖,让我们的代码更加简洁高效。无论你是新手还是有经验的开发者,掌握ES6都会让你的编码变得更加愉快和高效。那么,让我们开始吧!
|
8月前
|
前端开发
关于ES6新特性的总结 2
关于ES6新特性的总结
23 0
|
8月前
|
Java
es6中简单常用的新特性
es6中简单常用的新特性
35 0
|
9月前
|
前端开发 JavaScript
es6的8条新特性总结
es6的8条新特性总结
108 0