ES6+
ES6 版本算是 JavaScript 的一个分水岭,目前虽然在生产实践中绝大部分最终都会转换为 ES5 版本的代码,但是在开发实践中,ES6+ 几乎才是开发人员的标配,故这边截取一些常用的做个汇总吧。
截止目前其实主要就是围绕着 ES6~12 这些版本的新特性,简要的做一些说明。
字面量的增强
ES6 中对 对象字面量 进行了增强,称之为 Enhanced object literals(增强对象字面量)。字面量的增强主要包括下面几部分:
- 属性的简写:Property Shorthand
- 方法的简写:Method Shorthand
- 计算属性名:Computed Property Names
var name = "js";
var obj = {
// 1.property shorthand(属性的简写)
name,
// 2.method shorthand(方法的简写)
foo: function () {
console.log(this);
},
bar() {
console.log(this);
},
baz: () => {
console.log(this);
},
// 3.computed property name(计算属性名)
[name + 123]: "javascript",
};
解构 Destructuring
ES6 中新增了一个从数组或对象中方便获取数据的方法,称之为解构 Destructuring。
我们可以划分为:数组的解构和对象的解构。
数组的解构:
基本解构过程
- 顺序解构
- 解构出数组
- 默认值
var names = ["abc", "cba", "nba"];
// var item1 = names[0]
// var item2 = names[1]
// var item3 = names[2]
// 对数组的解构: []
var [item1, item2, item3] = names;
console.log(item1, item2, item3);
// 解构后面的元素
var [, , itemz] = names;
console.log(itemz);
// 解构出一个元素,后面的元素放到一个新数组中
var [itemx, ...newNames] = names;
console.log(itemx, newNames);
// 解构的默认值
var [itema, itemb, itemc, itemd = "aaa"] = names;
console.log(itemd);
对象的解构:
- 基本解构过程
- 任意顺序
- 重命名
- 默认值
var obj = {
name: "js",
age: 18,
height: 1.88,
};
// 对象的解构: {}
var { name, age, height } = obj;
console.log(name, age, height);
var { age } = obj;
console.log(age);
var { name: newName } = obj;
console.log(newName);
var { address: newAddress = "厦门" } = obj;
console.log(newAddress);
function foo(info) {
console.log(info.name, info.age);
}
foo(obj);
function bar({ name, age }) {
console.log(name, age);
}
bar(obj);
let/const 基本使用
ES6 中新增了块级作用域,最直接的表现就是新增的 let 关键词,使用 let 关键词定义的变量只能在块级作用域中被访问,有“暂时性死区”的特点,也就是说这个变量在定义之前是不能被使用的。
详细查看:声明、变量及赋值