ES6(ECMAScript 2015)是JavaScript的一个重大更新,它引入了许多新特性和语法糖,使得JavaScript的开发更加高效和灵活。下面是一些ES6中新增的主要特性及其代码示例:
1. 模板字符串(Template Strings)
模板字符串允许你嵌入表达式,并且可以跨越多行。
|---|-------------------------------------------------------|
| | let name = "Alice";
|
| | let greeting = `Hello, my name is ${name}!`;
|
| | console.log(greeting); // Hello, my name is Alice!
|
| | |
| | let multiLineString = `This is a very long
|
| | string which spans across multiple lines.`;
|
| | console.log(multiLineString);
|
2. 箭头函数(Arrow Functions)
箭头函数提供了一种更简洁的函数书写方式,并且不绑定自己的this
,arguments
,super
,或new.target
。
|---|----------------------------------------------------------------|
| | const numbers = [1, 2, 3, 4];
|
| | const doubled = numbers.map(n => n * 2);
|
| | console.log(doubled); // [2, 4, 6, 8]
|
| | |
| | const person = {
|
| | name: "Bob",
|
| | greet: () => `Hello, my name is ${this.name}`
|
| | };
|
| | console.log(person.greet()); // Hello, my name is undefined
|
| | // 注意:这里的`this`指向全局对象(非严格模式)或`undefined`(严格模式)
|
3. 默认参数值(Default Parameter Values)
允许你为函数的参数设置默认值。
|---|--------------------------------------|
| | function greet(name = "World") {
|
| | console.log(`Hello, ${name}!`);
|
| | }
|
| | |
| | greet(); // Hello, World!
|
| | greet("Alice"); // Hello, Alice!
|
4. 解构赋值(Destructuring Assignment)
允许你从数组或对象中提取数据,并将其赋值给声明的变量。
|---|------------------------------------------------------|
| | // 数组解构
|
| | const [first, second, ...rest] = [1, 2, 3, 4, 5];
|
| | console.log(first); // 1
|
| | console.log(rest); // [3, 4, 5]
|
| | |
| | // 对象解构
|
| | const person = {
|
| | name: "Alice",
|
| | age: 30
|
| | };
|
| | const { name, age } = person;
|
| | console.log(name); // Alice
|
| | console.log(age); // 30
|
5. 类(Classes)
ES6引入了基于原型的对象模型的语法糖,使得JavaScript的面向对象编程更加清晰。
|---|-------------------------------------------------------------------------------------|
| | class Person {
|
| | constructor(name, age) {
|
| | this.name = name;
|
| | this.age = age;
|
| | }
|
| | |
| | greet() {
|
| | console.log(`Hello, my name is ${this.name} and I am ${this.age} years old.`);
|
| | }
|
| | }
|
| | |
| | const alice = new Person("Alice", 30);
|
| | alice.greet(); // Hello, my name is Alice and I am 30 years old.
|
6. 模块化(Modules)
ES6引入了模块系统,使得JavaScript代码可以被分割成可复用的模块。
|---|-------------------------------------|
| | // math.js
|
| | export function sum(a, b) {
|
| | return a + b;
|
| | }
|
| | |
| | // app.js
|
| | import { sum } from './math.js';
|
| | console.log(sum(1, 2)); // 3
|
以上只是ES6引入的一部分新特性,实际上ES6还包含了很多其他重要的更新,如let
和const
(块级作用域变量)、Map
和Set
(新的数据结构)、Promise
(异步编程解决方案)、for...of
循环等。