ECMAScript6在2015年6月正式发布。它的目标,是是的JavaScript语言可以用来编写复杂的大型应用陈旭,称为企业级开发语言。ECMAScript是JavaScript的规格,后者有时前者的一种实现。
let和const命令
let命令
ES6新增let命令,用来声明变量,用法类似于var。区别为:
- let所声明的变量,只在let命令所在的代码块内有效。
- let不存在“变量提升”现象,即其变量的定义是在JavaScript的代码执行阶段。
- let存在暂时性死区,即又要块级作用域内存在let命令,它所声明的变量就“绑定”这个区域,不再受外部的影响。
- let实际上为JavaScript新增了块级作用域;
如此便解决了块级局部变量以及for循环中局部变量的问题。解决了如下一个大问题:
1 | var a=[]; |
const命令
const用来定义常量,一旦声明,常量的值就不能改变。
- 严格模式下,重新赋值会报错,常规模式下,赋值无效不报错;
- const声明时不赋值则不能赋值,常量为undefind。严格模式下,const声明时必须赋值,否则报错;
- const存在块级作用域。
变量的结构赋值
只要等号两边的模式相同,左边的变量就会被赋予对应的值。可以用于交换变量的值、从函数返回多个值、函数参数定义、解析jsondata等。
1 | var [foo,[[bar],baz]] = [1,[[2],3]]; |
字符串的扩展
String类型主要添加了遍历字符、字符串的头尾判断、字符串重复、字符的有关Unicode表示等。
1 | for(let codePoint of 'foo'){ |
数值的扩展
新增了是否为无穷、NaN判断,是否为整数,安全整数,另外,parseInt()、parseFloat()方法也放到了Number对象的下面。Math对象的话则添加了获取整数部分,返回正负值,立方根、对数等。
1 | 0b111110111 === 503 // 0b二进制 true |
数组的扩展
新增了将类数组转换为数组、将一组值转换为数组的方法,通过find()查找第一个符合条件的数组成员,通过fill填充数组,还可以通过entries()等方法返回键值对数组等。
1 | let arrayLike={'0':'a','1':'b','2':'c',length:3}; |
函数参数的扩展
函数中新增了设置参数默认值、rest参数等功能,并且新增了箭头函数,尾递归优化等,并且可以通过函数的length属性获取其无默认值参数的个数。
1 | function Point(x = 0, y = 0) { //设置参数默认值 |
对象的扩展
对象的扩展对象合并、属性遍历、返回对象键值数组等
1 | Object.is(NaN,NaN) //true 只要两个值一样,就相等,不同于=== |