ES6总结
2017年10月12日
ES6
ECMAScript 6(简称 ES6),也称为 ECMAScript 2015,是 ECMAScript 标准的第六个版本。ECMAScript 是 JavaScript 的标准化语言规范,ES6 是其重要的升级版本,带来了许多新的功能和改进,极大地增强了 JavaScript 语言的能力和便利性。以下是对 ES6 的详细介绍,包括其背景、新特性和对开发的影响。
ES6 的主要新特性
1. 块级作用域
let 和 const ES6 引入了 let 和 const,用于声明块级作用域的变量和常量,避免了 var 声明带来的作用域问题。
{
let x = 10;
const y = 20;
// x 和 y 仅在此块内有效
}
// x 和 y 在此处不可访问
暂时性死区
let, const声明的变量/常量,不允许重复,存在暂时性死区,既变量/常量在声明之前,不可使用,否则就会报错
const声明的常量
const声明的常量,并不能保证变量的值不发生变化,只是保证变量指向的内存地址不变,这在值为(数字,字符串,布尔值)等原始数据类型时,表现为常量,但是值为对象或数组时,变量只是保持了其不可变的内存地址,但是该对象或数组的值是可变的!:const foo = {}; foo.age = 123; //合法 但是,不管值是那种数据类型,const定义的变量都不可以重新赋值!!!
ES6一共有6种变量声明方法:var, function, let, const, import, class
2. 箭头函数
箭头函数提供了一种简洁的函数定义方式,并且不绑定自己的 this,使得上下文的处理更加直观。
const add = (a, b) => a + b;
在箭头函数中,this
总是绑定其外部函数的this
:
function test () {
const _this = this;
// 指向相同的对象地址
const test2 = () => this === _this;
console.log(test2()); // true
}
3. 模板字符串
模板字符串(Template Strings)允许在字符串中嵌入表达式,使用反引号(`)包裹,支持多行字符串和内嵌变量。
const name = 'World';
console.log(`Hello, ${name}!`);
4. 解构赋值
解构赋值使得从数组或对象中提取数据更加简洁。
const [a, b] = [1, 2];
const { name, age } = { name: 'Alice', age: 25 };
5. 默认参数
函数参数可以有默认值,避免在调用时进行冗余的参数检查。
function greet(name = 'Guest') {
return `Hello, ${name}`;
}
6. 展开运算符
展开运算符(Spread Operator)用于展开数组或对象,简化数据操作。
const arr1 = [1, 2];
const arr2 = [...arr1, 3, 4];
const obj1 = { a: 1, b: 2 };
const obj2 = { ...obj1, c: 3 };
7. 模块
ES6 模块系统(Module)引入了 import 和 export 关键字,用于模块化代码管理。
// module.js
export const pi = 3.14;
// main.js
import { pi } from './module';
console.log(pi);
8. 类
ES6 提供了类(Class)语法,使得基于原型的继承更直观和类似传统面向对象编程语言。
class Person {
constructor(name) {
this.name = name;
}
greet() {
return `Hello, ${this.name}`;
}
}
const alice = new Person('Alice');
console.log(alice.greet());
使用extends进行继承
class Person2 extends Person {
constructor(age) {
super('Alice');
this.age = age;
}
getAge() {
return super.name + ' age is ' + this.age;
}
}
const p = new Person2(22);
p.getAge() // => 'Alice age is 22'
9. Promise
Promise 是异步编程的一种解决方案,用于处理异步操作的结果。
const promise = new Promise((resolve, reject) => {
setTimeout(() => resolve('Success'), 1000);
});
promise.then(result => console.log(result));
10. Symbol
Symbol 是一种新的基本数据类型,表示唯一的标识符。
const sym = Symbol('description');
转载说明
本文允许全文转载,转载请注明来源: 平凡公子 - ES6总结