嘻嘻,就记录一些自己常用的ES6语法。毕竟更新地频繁,而且有些又不常用。所以就当做有条件地学习吧~~
变量声明const和let
在ES5,我们不管声明任何变量,用的都是var
关键字,但是导致了一个问题,就是无论声明在何处,都会被视为声明在函数的最顶部,也就是常说的变量提升。看两个例子感受一下ES6新关键字let
带来的好处。
|
|
很直观你就能感受到,其实变量提升的设计是为了简化一些工作。然而却带来了一系列不是我们预想的编译结果。例如,当条件满足,我才声明该变量的这种需求就变得难以满足。常常需要借助闭包来实现。但是let
关键词出现之后,代码就要求更加规范了。因为
let
变量关键字和const
常量关键字都是块级作用域:
- 在一个函数内部
- 在一个代码块内部
说的明白点,每个{}
大括号内的代码块就是let
和const
的作用域。也就是有些操作,终于不需要闭包操作啦!!栗子:
很明显,闭包虽然是js的一大特性,但是写起来是真的麻烦。所以能简便这种不明确需要闭包技术的操作,何乐不为。
至于const
关键字,就是常量,一经定义绝对不允许改变。所以当你有一个不想被改变的值的时候,就可以设置为const,这样可以避免重复时候发生的覆盖现象。
另外,在我遇到的情况下,用var
的地方都可以完美地利用const
和 let
来代替。而且,var
的提升容易造成问题,所以尽量使用新提供的关键字哦!
模板字符串
这这这,绝对是最最最最最实用的!!直接贴,这个功能绝对是比农奴解放还要伟大啊喂!
直接贴出三个用途吧:
- 基本的字符串格式化。将表达式嵌入字符串中进行拼接。用${}来界定:最常用了啊
- 在ES5时我们通过反斜杠()来做多行字符串或者字符串一行行拼接。ES6反引号(``)直接搞定。页面的渲染,再也不会乱糟糟一大坨了,耶~123456789// ES5var msg = "Hi \man!"// ES6const template = `<div><span>hello world</span></div>`
字符串方法
|
|
函数
函数默认参数
以前,我们设置参数默认值是这样设置的
但是这种方法是有bug的,也就是说当用户传入0的时候,num = 200;因为0的布尔值就是false。所以嘛,有问题哦!
ES6为参数提供了默认值,更加语义化,更加容易看到,而且也不需要查看源码就能读到这个值所支持的默认属性。除了丑了点,一开始不习惯,就没啥不好的啦~直接贴语法吧。
箭头函数
几乎是一提ES6就能想到箭头函数。箭头函数最直观的三个特点——
- 不需要function关键字来创建函数。
- 省略return关键字
- 继承当前上下文的this关键字,这里是一个容易出bug的点。利用箭头函数,不会改变当前的this,不会改变当前的this,不会改变当前的this。
|
|
扩展的对象功能
构建对象时候的各种简写, 虽然一开始写起来不方便而且还不爽。但是写久了,特别是数量特别多的时候,你就会觉得这个东西越看越可爱啊喂
ES6对象提供了Object.assign({})这个方法来实现浅复制,就是JQ的那个extend({})
啦。
结构以及展开运算符…
这个我已经写过啦。跑去看这篇文章吧。ES6中的arguments对象和parameters对象
勉勉强强补写个语法给你看吧
这里看到一个对于Object而言,还可以用于组合新的对象。如果有重复的属性名,右边覆盖左边。其实就是Object.assign({}, first, second)
。
import 和 export
这个概念就是模块化了啦~~直接贴栗子,其实模块化知识没那么简单。
导入的时候有无大括号的区别,找别人的总结啦:
Promise
说白了就是用同步的方式去写异步代码。避免代码横向发展,进入回调地域。
咦,这个话题我好像也讨论过了?解决回调地狱
Generators 生成器
嘻嘻 其实也写过。hmm 还是看上面的文章吧