ES6特性一览表(面试可用)
(第一篇:包含1-7点特性)
- 1. 新的声明方式
- 2. 变量解构赋值
- 3. 扩展运算符
- 4. 字符串模板
- 5. 箭头函数
- 6. class类的支持
- 7. 模块化操作
- 8. promise对象的使用
- 9. Math,Number,String,Array,Object 的新API
- 10. Map,Set 和 WeakMap,WeakSet
- 11. Set和WeakSet数据结构
- 12. 对象中的Symbols
- 13. 预处理器Proxy
- 14. iterator, generator
1. 新的声明方式
两个关键字:let与const
let: 与var的区别在于,它定义的变量被限定在一定的作用域内。(类似局部变量)
const: 用来定义常量,无法更改其值。
const j = 2 //定义j为常量,用于定义不需要改变值的变量
for (let i=0;i<j;i++){
console.log(i)
};//输出: 0,1
console.log(i) //输出undefined,严格模式下报错
2. 变量解构赋值
- 数组解构
注意:数组赋值的元素按顺序排列赋值
let [a,b] = [1,2] // 打印a,b结果分别为1,2
- 对象解构
注意:对象赋值没有顺序,按变量与属性名对应赋值,所以变量名必须与属性名相同,才能正确取值
let {a,b} = {a:3,b:4} // 打印a,b结果分别为3,4
- 字符串解构
const [a,b,c,d,e,f] = "demoJx"
console.log(a) //输出为d
console.log(c) //输出为m
console.log(f) //输出为x
3. 扩展运算符
- 扩展参数
function myLog(...arg){
for(let val of arg) {
document.documentElement.innerHTML += val +'<hr\>'
console.log(val)
}
}
myLog(1,2)//可传任意数量的参数
- 深拷贝
let arr1=['a','b','c'];
//let arr2=arr1; //这样赋值是浅拷贝,仍然使用同一个堆栈
let arr2=[...arr1];//这样赋值是深拷贝,只是值相同
4. 字符串模板
ES6中允许使用反引号 ` 来创建字符串,反引号在键盘tab键上方。
用该方式创建字符串时,可用${变量},来引用变量。
const name = 'demoJx';
console.log(`My name is ${name}`); //输出 My name is demoJx
5. 箭头函数
用于定义函数,能在作用域能得到上下文的值。
var add = function (a,b) {
return a+b
}
var add = (a,b) => {
return a+b
}
6.class类的支持
在es6中,可以像java语言一样,声明类,使用类,继承类。
class Father{ //定义声明father类
name(val){
console.log(val);
}
constructor(a,b){ //类的构造方法
this.a=a;
this.b=b;
}
}
class Children extends Father{} //类的继承
let FirstChild = new Children; //使用类
FirstChild.name('demoJx')//控制台输出 demoJx
7. 模块化操作
export :负责进行模块化,也是模块的输出。
import : 负责把模块引,也是模块的引入操作。
temple.js文件
var a ='1';
var b ='2';
var c ='3';
export default {a,b,c}
index.js文件
import z from './temp.js'
console.log(z) //打印出来的是包含a,b,c的对象