1.const 与let
- const是声明常量,let是声明变量。二者皆可代替var。此处const声明常量指的是指向的变量地址不变,在简单类型变现为值不变,但是在Object中,指的是引向的变量地址不变,该对象可以任意添加属性。
通常函数的声明也会采用const的方式。const obj={ a:1, b:2 }; obj.c=3 //此处不会报错 obj={} //会报错
- const和let与var不同在于不会进行声明提前,在let或const声明之前,禁止这个变量的使用,也就是暂时死区。
- const和let仅在{}内有效,这也是es6提供的块级作用域的写法,这样做有利于模块化的编程,同时减少全局变量的污染(例:for循环
- const 和let的使用有利于语义化,有利于阅读代码
2.箭头函数
- 箭头函数也就是(arguments)=>{ return result}的写法,在无中间步骤的情况下可以直接简写成arguments=>result
- 箭头函数与普通函数不同的点在于会引入上下文的变量环境(也就是this)
let obj = {
a: 1,
b: function() {
setTimeout(function() {
console.log(this)
}, 0)
}
}
obj.b()//window
let obj2 = {
a: 1,
b: function() {
setTimeout(()=> {
console.log(this)
}, 0)
}
}
obj2.b()//Object { a: 1, b: b() }
- 箭头函数提供了对函数默认值的支持,当含有默认值的时候,只需要在声明的时候添加上就可以了,比如 (a,b=5)=>{ return result} 这里的b默认赋值为5,但是需要注意的是,有默认赋值的变量需放在参数列尾,同时函数内不能声明同名变量和常数
- 没有arguments参数,取而代之的是rest函数(也就是…values)
以上就是一些es6对es5一些常用的语法的改变,我个人认为es6比起以前更注重代码的语义化,用es6的语法在阅读代码方面更加清晰也更便于阅读,在编程方面es6引进了一些其他面对对象语言的特点,开始注重模块化编程,在异步操作方面也有很多改变。