定义变量:
let
之前:var a = 12;
现在:let a = 12;
代码块:用{}包含起来的代码,比如if、for、while
- let特点:只能在代码块里面使用
- var 只有函数作用域
|
|
|
|
- let 具备块级作用域
- 不能重复声明
总结:其实let才是接近其他语言的变量
用处
封闭空间:
|
|
|
|
i值问题:
|
|
总结:块级作用域其实就是匿名函数立即调用
const
|
|
const用来定义常量,一旦赋值,以后再也修改bu不了了,而且必须一次性赋完值
const a; a = 12;
这样是错的。
注意:const必须给初始值,因为以后再也无法赋值了。并且不能重复的声明。
字符串连接
之前:
“abc” + 变量名 + “ef”
|
|
现在:
`abc${变量名}ef`
|
|
解构赋值
|
|
模式匹配
左侧的样子需要和右侧一样
|
|
交互:
[{“title”:””,”href”:””,”img”:””}];
解构赋值还可以给默认值:
var json = {};
var a = json.a || 12;
语法:
var {time=12,id=0} = {};
|
|
复制数组
循环
1234567var arr = [1,2,3];var arr2 = [];for(var i = 0;i<arr.length;i++){arr2[i] = arr[i];}arr2.pop();console.log(arr,arr2); //[1,2,3],[1,2]Array.from
1234var arr = [1,2,3];var arr2 = Array.from(arr);arr2.pop();console.log(arr,arr2); //[1,2,3],[1,2]var arr2 = […arr];
1234var arr = [1,2,3];var arr2 = [...arr];arr2.pop();console.log(arr,arr2); //[1,2,3],[1,2]- …的用法
12345function show (){arguments.push(4);console.log(arguments); //报错arguments.push is not a function}show(1,2,3);12345function show (...args){args.push(4);console.log(args); //[1,2,3,4]}show(1,2,3);
循环
普通for循环
for in循环
新增了for of循环:用来遍历(迭代、循环)整个对象,表现有点类似于for in
|
|
|
|
for of循化可以循环数组,不能循环json。而它真正的目的是为了循环 map对象
map对象:
和json相似,也是一种key-value形式。
map对象为了和for of循环配合而生的。
|
|
注意:遍历map不能使用for in,使用for in没有效果
|
|
for of 也可以循环数组
|
|
箭头函数
函数:之前
|
|
|
|
|
|
|
|
|
|
|
|
注意:this的指向问题,this指向了window
|
|
注意:arguments不能使用了
|
|
对象
对象语法简洁化
单例模式:
|
|
|
|
面向对象
之前:
|
|
ES6里有类的概念了:
类 class
构造函数 constructor 生成完实例之后自己就执行的函数
|
|
|
|
模块化
seajs、requirejs
ES6自带模块化
必须引入traceur和bootstrap,type必须写成module
如何定义(导出)模块:
|
|
如何使用(引用)模块
|
|
|
|
|
|
|
|
|
|
|
|
导出多个模块
|
|
|
|
Promise
promise—承诺
就是一个对象,用来传递异步操作的数据(消息)
三种状态:
- pending:初始状态
- fulfilled:成功的操作
- rejected:失败的操作
|
|
|
|
|
|
|
|
Generator
是一个函数,可以遍历,generator就是一个状态机
语法:
|
|
|
|
形式上:
- 函数名字前面有*
- 函数内部使用yield语句
|
|
总结:每次返回一个value的done的结果
value,每次yield后面的值
done,是一个布尔值,代表是否遍历结束
yield是否有返回值?
yield语句本身没有返回值,或者每次返回undefined
next可以带参数?
给上一个yield值
for…of循环
循环generator函数
本文结束,感谢阅读。
本文作者:melody0z
本文链接:https://melodyvoid/JavaScript/ecmascript-6.html
欢迎转载,转载请注明文本链接