革命
伴随着es6到来的是一场语法革命!
let const
请忘记var
,统一使用let
,const
声明变量和函数
let foo = `new`
let bar = function(){}
解构
解构带来了简洁的赋值方式
,在任何声明变量的地方
都可以使用解构赋值。
let
for of
函数形参
import
解构分为[]
,{}
两个模式
const { name, age } = { name:`lbc`, age:22 }
const [ name, age ] = [ `lbc`, 22 ]
默认值
解构默认值
let [a=1] = []
参数默认值
let = function(x=0){}
...运算符
请忘记arguments
function fn(...args){}
请忘记apply
console.log(...[1,2])
在{}模式下展开
它会迭代键值对
let obj = {...{a:1},...{a:2}}
在[]模式下展开
它会调用迭代接口Symbol.iterator
let o = {[Symbol.iterator]:function*(){yield 1;yield 2}}
[...o]
箭头函数
() => 6
它没有自身的this
,arguments
,new.target
等等隐藏的变量
二进制和八进制数值表示法
es6明确规定二进制和八进制前缀为0b
,0o
对象字面量
es6增加了属性的简洁表示法和计算属性名
let name = `lbc`;
let obj = {
name,
do(){},
[`a`+`ge`]:22
}
模版字符串
它可以嵌入表达式,保留换行和缩进,请忘记''
,""
let name = `lbc`
let template = `
my name is ${lbc}
`