一些关于es6简单的介绍与了解。初始认知有限,循序完善。es6
又叫ES2015,是2015年推出的JavaScript新版本。面试
相应的,后边推出的ES七、八、九、10等都依次是上一版本发出后一年的新迭代版本。不过不少还是提案,并不被浏览器支持。浏览器
如今广泛使用es六、7,但仍然须要工具进行编译转换成es5的语法。这个工具就是babel(后表)。babel
让JavaScript愈来愈好用、愈来愈强大,逐渐完善到成为企业级的开发语言。闭包
语言迭代天然是弥补以前语言的不足,或者让原有语言更加规范、更加简便易用。函数
因此ES6在原有基础上增长了一些语法糖,引入了一些新特性。使得es更加规范、易操做,简化了项目的复杂程度,下降出错率,提升开发效率。工具
以let出现来讲,就是由于js没有块级做用域的概念,新人使用常常遇到的一个出错点就像下边这样的代码:学习
【也是面试高频的埋雷题】es5
请问点击每个li,打印的是什么?spa
若是想点击li输出对应的索引要怎么改?
这个问题对于学到这里的咱们应该很easy了,由于i是全局的,因此打印i的时候会取window上的i,此时for循环完i就是li.length的值。即不管点击哪一个li,获得的结果都是同一个数。
平时咱们解决时,可能会建立一个当即执行函数包裹住click事件的绑定,存储不一样的i值到不一样的函数做用域中,最后利用闭包的原理输出不一样的i值以实现打印索引的需求。
这也就暴露了var声明变量的弱点。因此就有了let的出现。
使用let咱们轻松修改,就能达到上边的需求:
相对上边的代码只改了一个单词,不能够说es6很差用。
由于低版本浏览器的不支持,就须要Babel工具进行转换。
感觉一下:一样是上边那段使用let的代码(图三),
通过babel编译成es5语言后,实现了咱们须要的功能。可是咱们开发的时候只须要写let就能够了,仍是灰常方便的。
能够看出编译后的原理仍是利用了函数做用域和闭包[/偷笑]
babel的基础配置见下篇。