一、变量let和const
var:
可以重复声明
可以进行变量提升(即将声明提升到最前面)
let:
不可以重复声明
块级作用域
不可以变量提升
const:
不可以重复声明
块级作用域
声明后不可以进行修改
声明时必须初始化
const声明的数组内容可以被修改,所以常规使用const进行数组变量的声明
二、解构赋值
1.什么是解构?:es6允许按照一定的模式,从数组和对象中提取值,对变量进行赋值,这被称为解构
2.数组解构赋值:
语法:
let [a,b,c] = [1,2,3];
console.log(a,b,c);
3.对象解构赋值:
语法:let{a,b} = {
a:'aa',
b:'bb'
};
console.log(a,b);
4.字符串的解构赋值:
语法: let[a,b,c,d] = 'hello';
console.log(a,b,c,d);//h e l l
5.函数的解构赋值:
function fun([x,y]){
console.log(x+y);
}
fun([1,2]);//实参
6.解构的用途:
交换变量的值
从函数返回多个值(这样就可以快速调用一些数据)
函数传参
提取json数据(解构对提取json尤其有用)
函数参数默认值(es6允许函数的参数设置默认值)
7.函数默认初始值
一般用法:(直接将默认值写在形参之后)
function fun(x,y ='world'){
console.log(x,y);
}
与解构配合使用:
function fun({x,y=5}={}){
console.log(x,y);
}
三、对象的简化写法
1.ES6允许在大括号里面,直接写入变量和函数,作为对象的属性和方法在Vue中经常使用,这样写会使得编写更加的简洁!
四、箭头函数
1.ES6允许使用「箭头」(=>)定义函数
声明函数的两种方法:
let fn = function(){
}
let fn = (a,b) => {
return a+b;
}
2.this是静态的,this始终指向函数声明时所在作用域下的this的值
3.箭头函数的this值是静态的,始终指向函数声明时所在作用域下的this的值
4.箭头函数不能作为一个构造函数实例化对象!
5.箭头函数不能使用arguments变量
五、Symbol
Symbol是一种标识符,是一种类型,表示独一无二的值
1.Symbol简介:
Symbol的值是唯一的,用来解决命名冲突的问题
Symbol的值不能与其他数据进行运算
Symbol定义的对象属性不能使用for…in...进行循环遍历,但是可以使用Reflect.ownKeys来获取对象的所有键名
1.直接使用Symbol进行创建
2.使用Symbol.for进行创建
六、迭代器
1.for…in…:遍历返回的是键名~~~for…of…:遍历返回的是键值
2.迭代器的工作原理
创建一个指针对象,指向当前数据结构的起始位置
第一次调用对象的next方法,指针自动指向数据结构的第一个成员
接下来不断使用next方法,指针不断向后移动直到指向最后一个数据成员
每调用一次方法返回一个包含value和done属性的对象(done代表是否完,为一个布尔值,如果遍历完成则为ture,否则为false)
3.注意:要自定义遍历数据的
时候,要想到迭代器!
七、ES6模块化
1.有助于处理各个模块之间的冲突,易于维护,易于修改
2.ES6之前的模块化规范主要有:
1. CommonJS => NodeJS、Broeserify
2. AMD => requireJ
3. CMD => seaJS
3.模块化功能主要由两个命令构成:export和import
1)export命令用于规定模块的对外接口
2)import命令用于输入其他模块提供的功能
八、浏览器使用模块化的两种方式
1、使用import引入
2、建立一个入口文件然后仅直接引入入口文件