关于ES6的新特性
let
变量不能重复声明
块级作用域
不存在变量提升
不影响作用域链
const
一定要赋初始值
一般常量使用大写
常量的值不能修改
块级作用域
对于数组和对象的元素修改,不算对常量的修改,不会报错
解构赋值
模板字符串 ··
内容中可以直接出现换行符
变量拼接
let love='想';
let out=`${love}我的最爱`;
console.log(out);
简化对象写法
ES6允许在大括号里面直接写入变量和函数,作为对象的属性和方法
箭头=>定义函数
this是静止的,始终指向函数声明时所在作用域下的this的值
不能作为构造实例化对象
不能使用arguments变量
箭头函数的简写:
1)省略小括号,当形参只有一个的时候
2)省略花括号,当代码体只有一条语句的时候
箭头函数适合与this无关的回调,定时器,数组的方法回调。
rest参数,用于获取参数的实参
...args
rest参数必须要放到参数最后
...扩展运算法能将数组转化为逗号分割的参数序列
应用:
数组合并
数组克隆
将伪数组转换为真正的数组
数据类型symbol
1)Symbol的值是唯一的,用来解决命名冲突的问题
2)Symbol值不能与其他数据进行运算
3)Symbol定义的对象属性不能使用for..in循环遍历,但是可以使用Reflect.ownkeys来获取对象的所有键名
USONB
symbol内置值,扩展对象功能
迭代器(Iterator)
任何数据结构只要部署lterator接口,就可以完成遍历操作。
生成器,ES6提供的一种异步解决方案
函数代码分隔符 function * gen(){
yield ‘zz’;
}
promise异步解决方案
使用promise读取文件
set(集合)
5) clear
Map键值对的集合,但是键的范围不限于字符串
升级版的对象
class类
get和set
get用于动态计算
set设置,增加控制和判断
数值扩展
Number.EPSILON是JavaScript的最小精度
二进制与八进制,十六进制 0b,0o,0x
Number.isFinite
Number.isNaN
Math.trunc 将小数部分抹掉
Math.sign 判断一个数是正数还是负数还是0
Object.is 判断两个值是否完全相等
Object.assign 对象的合并
ES6的模块化
ES6模块化语法
export 分别暴露,统一暴露,默认暴露
babel对ES6模块化代码转换