ES6
2020-07-07 本文已影响0人
瑟闻风倾
1. var 优化为 let 和 const
在ES6开发中,优先使用 const ,只有需要改变某一个标识符的时候才使用 let。
(1) let(声明变量) —块级作用域
- var(ES5):无块级作用域(如f和for)。
- let(ES6):有块级作用域(如f和for)。
ES5中仅函数有作用域,if/for都无作用域。ES5之前因为if和for都没有块级作用域,所以很多时候必须借助function的作用域来解决引用外面变量的问题(如for循环使用闭包来解决);ES6中加入来let,let有if和for的块级作用域。
拓展:在IOS开发,使用swift语言时,var定义变量,let定义常量,建议尽量使用let。
(2) const(声明常量) —使用和注意点
- 在使用const定义标识符时,必须进行赋值
- 一旦给const 修饰的标识符被赋值之后,不能修改
- 常量的含义是指向的对象不能修改,但可以改变对象的属性
<script type="text/javascript">
const obj = {
name:'liy',
age:18
}
console.log(obj);
obj.name = 'yang'
obj.age = 19
console.log(obj);
</script>
每个对象都指向唯一的内存地址。
2. 对象(字面量)增强写法
- 属性的增强写法
<script type="text/javascript">
const name = 'liy'
const age = 18
/* ES5写法 */
/* const obj = {
name:name,
age:age
} */
/* ES6对象属性增强写法 */
const obj = {
name,
age
}
console.log(obj);
</script>
- 函数的增强写法
<script type="text/javascript">
const name = 'liy'
const age = 18
/* ES5写法 */
/* const obj = {
name:name,
age:age,
eat:function(){
console.log("吃饭");
}
} */
/* ES6对象增强写法-属性和函数的增强写法 */
const obj = {
name,
age,
eat(){
console.log("吃饭");
}
}
console.log(obj);
</script>
拓展:JavScript的设计缺陷除了var之外,还有一个就是不能进行类型检测。microsoft公司开发的TypeScript和facebook开发的flow都能够实现类型检测,目发展的好的是TypeScript,但目前国内并没有流行。angular低版本使用的是JavScript,但angular高版本使用的是比ES6更高级的TypeScript(ts),能够进行类型检测。