一、箭头函数
ES6 JavaScript引入了箭头函数,箭头函数简化了函数的写法。以前写代码时,常使用匿名函数把一个函数传递给另一个函数,现在使用箭头函数可以更清晰地表达意图。
//ES5 var add = function(a, b) { return a + b; }; console.log(add(2,3)); // 5 //ES6 const add = (a, b) => { return a + b; }; console.log(add(2,3)); // 5
箭头函数不需要使用function关键字定义,而是使用=>定义。如果函数体只有一行语句,可以省略花括号 { } 和 return。
二、类
ES6引入了类的概念,可以用更面向对象的方式编写代码。ES6的类不仅可以使用构造函数定义属性和方法,还可以使用extends和super进行继承。
class Animal { constructor(name) { this.name = name; } speak() { console.log(this.name + ' makes a noise.'); } } class Dog extends Animal { speak() { console.log(this.name + ' barks.'); } } let d = new Dog('Mitzie'); d.speak(); // Mitzie barks.
在以上代码中,Animal类是一个基类,Dog类通过extends Animal实现继承。使用super可以访问父类的属性和方法。
三、解构赋值
解构赋值是一种从数组或对象中提取值并赋值给变量的方式,ES6引入了解构赋值的语法。
//数组解构赋值 const [a, b] = [1, 2]; console.log(a); //1 console.log(b); //2 //对象解构赋值 const {name, age} = {name:'Tom', age:18}; console.log(name); //Tom console.log(age); //18
可以看出,使用解构赋值可以更简洁地从数组和对象中提取值。
四、模板字符串
ES6引入了模板字符串,可以通过使用反引号 `` 和 ${} 来更方便地创建字符串。
const name = 'Tom'; const age = 18; const str = `My name is ${name}, I am ${age} years old.`; console.log(str); // My name is Tom, I am 18 years old.
可以看出,使用模板字符串可以更方便地拼接字符串,并且可以包含变量和表达式。
五、默认参数
ES6支持给函数参数设置默认值,可以在不传递参数或传递null或undefined时使用默认值。
const add = (a, b=2) => { return a + b; }; console.log(add(2)); // 4 console.log(add(2,3)); // 5
在以上代码中,b设置了默认值2,当没有传递第二个参数或传递null或undefined时,使用默认值2。
六、Promise
ES6引入了Promise,它是一种异步编程的解决方案,可以帮助我们更简单地处理异步操作。
const promise = new Promise((resolve, reject) => { setTimeout(() => { resolve('done'); }, 1000); }); promise.then(res => { console.log(res); // done });
在以上代码中,我们创建了一个Promise对象,并在1秒后resolve它。我们可以使用then方法,在Promise对象被resolve时执行回调函数。
七、扩展运算符
扩展运算符是一种在可迭代对象、数组字面量、对象字面量和函数调用参数中扩展表达式的方法。它使用三个点 (...)。
//数组扩展 const arr1 = [1, 2, 3]; const arr2 = [4, 5, 6]; const arr = [...arr1, ...arr2]; console.log(arr); // [1, 2, 3, 4, 5, 6] //对象扩展 const obj1 = {a:1, b:2}; const obj2 = {c:3, d:4}; const obj = {...obj1, ...obj2}; console.log(obj); // {a:1, b:2, c:3, d:4}
可以看出,使用扩展运算符可以更方便地合并数组和对象。
八、结构化绑定
ES6引入了一种名为解构绑定或结构化绑定的特性,它可以更方便地从对象中提取属性,并将它们绑定到变量上。
//对象结构化绑定 const {name, age} = {name:'Tom', age:18}; console.log(name); //Tom console.log(age); //18 //数组结构化绑定 const [a, b] = [1, 2]; console.log(a); //1 console.log(b); //2
使用结构化绑定可以更方便地从数组和对象中提取值,并将它们绑定到变量上。