ES5与ES6特性对比总结

360影视 日韩动漫 2025-04-09 10:48 3

摘要:ES5(ECMAScript 5)和ES6(ECMAScript 2015)是JavaScript的两个重要版本,ES6在ES5的基础上引入了许多新特性,显著提升了开发效率和代码可读性。以下是两者的对比总结:

ES5(ECMAScript 5)和ES6(ECMAScript 2015)是JavaScript的两个重要版本,ES6在ES5的基础上引入了许多新特性,显著提升了开发效率和代码可读性。以下是两者的对比总结:

1. 变量声明

ES5:使用 var,存在变量提升(变量声明提升到作用域顶部)和函数作用域。

javascript

var x = 10;

ES6:引入 let 和 const,支持块级作用域,避免变量提升问题。

javascript

let a = 1;

const PI = 3.14; // 常量不可变

2. 箭头函数

ES6:简化函数语法,自动绑定外层 this,适合回调函数。

javascript

const add = (a, b) => a + b;

ES5:需显式处理 this(如 bind 或 var that = this)。

javascript

function add(a, b) { return a + b; }

3. 模板字符串

ES6:用反引号 ` 包裹,支持多行字符串和变量嵌入(${})。

javascript

const name = "Alice";

console.log(`Hello, ${name}!`);

ES5:字符串拼接繁琐。

javascript

console.log("Hello, " + name + "!");

4. 解构赋值

ES6:直接从数组/对象提取值。

javascript

const [a, b] = [1, 2]; // 数组解构

const { name, age } = person; // 对象解构

ES5:需逐个赋值。

javascript

var a = arr[0], b = arr[1];

5. 默认参数值

ES6:函数参数直接设置默认值。

javascript

function greet(name = "Guest") { /* ... */ }

ES5:需手动检查参数。

javascript

function greet(name) {

name = name || "Guest";

}

6. 类与继承

ES6:class、constructor、extends、super 简化面向对象。

javascript

class Person {

constructor(name) { this.name = name; }

}

class Student extends Person {

constructor(name, grade) { super(name); this.grade = grade; }

}

ES5:基于原型链。

javascript

function Person(name) { this.name = name; }

function Student(name, grade) {

Person.call(this, name);

this.grade = grade;

}

Student.prototype = Object.create(Person.prototype);

7. 模块化

ES6:原生支持 import/export。

javascript

// 导出

export const api = "https://example.com";

// 导入

import { api } from './config';

ES5:依赖CommonJS或AMD(如Node.js的 require)。

javascript

// 导出

module.exports = { api: "https://example.com" };

// 导入

const config = require('./config');

8. Promise

ES6:原生支持异步操作链式调用。

javascript

fetch(url)

.then(response => response.json)

.catch(error => console.log(error));

ES5:依赖回调或第三方库(如Q、Bluebird)。

javascript

asyncFunction(function(result) { /* ... */ }, handleError);

9. 新数据结构

ES6:引入 Map、Set、WeakMap、WeakSet。

javascript

const map = new Map;

map.set("key", "value");

ES5:用对象模拟,但键只能是字符串。

10. 展开/剩余运算符

ES6:... 用于数组合并、函数参数收集等。

javascript

const arr = [...arr1, ...arr2];

const sum = (...args) => args.reduce((a, b) => a + b);

总结

ES6 解决了 ES5 的痛点(如作用域、异步、语法冗余),引入了现代语言特性(类、模块、箭头函数等)。兼容性:ES6需通过Babel等工具转译为ES5以支持旧浏览器。性能:现代浏览器对ES6优化更好,建议在新项目中使用ES6+。

来源:老客数据一点号

相关推荐