ES6 特性

ES6(ECMAScript 2015)引入了许多新特性,使得 JavaScript 更加现代化、简洁和强大。以下是一些常用的 ES6 特性:

1. letconst 声明变量

let 用于声明块级作用域的变量,避免了 var 可能引起的作用域问题。

const 用于声明常量,声明后无法重新赋值。

javascript 复制代码
let x = 10; x = 20; // 允许修改 const y = 30; y = 40; // 错误,常量不可修改

2. 箭头函数 (=>)

箭头函数使函数的定义更加简洁,并且没有自己的 this,它会继承外部函数的 this

javascript 复制代码
const add = (a, b) => a + b; setTimeout(() => { console.log('Hello'); }, 1000);

3. 模板字符串(Template Literals)

使用反引号(`````)创建字符串,可以嵌入表达式和多行字符串。

javascript 复制代码
let name = "Alice";
let greeting = `Hello, ${name}!`;
console.log(greeting); // "Hello, Alice!"

let multiLine = `This is
a multi-line
string.`;
console.log(multiLine);

4. 解构赋值(Destructuring)

可以将数组或对象的值解构到变量中,简化代码。

数组解构:
javascript 复制代码
let [a, b] = [1, 2];
console.log(a, b); // 1 2
对象解构:
javascript 复制代码
let {name, age} = {name: "John", age: 30};
console.log(name, age); // "John" 30

5. 默认参数(Default Parameters)

函数的参数可以设置默认值,当未传入参数时,使用默认值。

javascript 复制代码
function greet(name = "Guest") {
  console.log(`Hello, ${name}!`);
}
greet(); // "Hello, Guest!"
greet("Alice"); // "Hello, Alice!"

6. 扩展运算符(Spread Operator)

用于展开数组或对象,或者将多个元素合并成一个新数组或对象。

数组扩展:
javascript 复制代码
let arr1 = [1, 2, 3];
let arr2 = [...arr1, 4, 5];
console.log(arr2); // [1, 2, 3, 4, 5]
对象扩展:
javascript 复制代码
let obj1 = {a: 1, b: 2};
let obj2 = {...obj1, c: 3};
console.log(obj2); // {a: 1, b: 2, c: 3}

7. 类(Class)

ES6 引入了面向对象编程的类(class)语法。

constructor是 构造器 构造对象

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.`);
  }
}

let person = new Person("Alice", 30);
person.greet(); 

8. Promise

Promise 用于处理异步操作,避免了回调地狱(callback hell)。

javascript 复制代码
let promise = new Promise((resolve, reject) => {
  let success = true;
  if (success) {
    resolve("Data received");
  } else {
    reject("Error occurred");
  }
});

promise
  .then(data => console.log(data))  // "Data received"
  .catch(error => console.log(error));  // "Error occurred"

9. 模块化(Modules)

  • ES6 引入了 importexport 语法,使得 JavaScript 更加模块化,方便代码分割和复用。
导出模块:
javascript 复制代码
// math.js
export const add = (a, b) => a + b;
export const multiply = (a, b) => a * b;
导入模块:
javascript 复制代码
// app.js
import { add, multiply } from './math.js';
console.log(add(1, 2));  // 3
console.log(multiply(2, 3));  // 6

10. 符号(Symbols)

Symbol 是一种新的原始数据类型,用于创建唯一的值,常用于对象属性的唯一标识。

javascript 复制代码
let sym = Symbol("description");
let obj = {
  [sym]: "This is a symbol property"
};
console.log(obj[sym]); // "This is a symbol property"

11. 生成器(Generators)

生成器函数使用 function* 声明,并通过 yield 关键字返回值。生成器可以暂停和恢复执行,适合处理异步操作或大数据流。

javascript 复制代码
function* generator() {
  yield 1;
  yield 2;
  yield 3;
}

let gen = generator();
console.log(gen.next().value); // 1
console.log(gen.next().value); // 2
console.log(gen.next().value); // 3

12. Set 和 Map

Set 是一个无重复元素的集合,Map 是一个键值对集合,可以用于更高效地存储和查找数据。

javascript 复制代码
let set = new Set([1, 2, 3]);
set.add(4);
set.add(3);  // 不会添加重复元素
console.log(set); // Set { 1, 2, 3, 4 }

let map = new Map();
map.set("name", "Alice");
map.set("age", 30);
console.log(map.get("name")); // "Alice"
console.log(map.size); // 2

13. 异步函数(async / await

asyncawait 用于简化异步操作,避免回调地狱。

javascript 复制代码
async function fetchData() {
  let data = await fetch('https://api.example.com');
  let json = await data.json();
  console.log(json);
}

这些是 ES6 的一些常用特性,学习和掌握这些特性会帮助你编写更简洁、可维护和高效的 JavaScript 代码。

相关推荐
weixin_382395236 小时前
为小工厂量身打造:本地部署的物料管理系统带缺料计算
前端·制造
__zRainy__6 小时前
解决pnpm v10+不自动构建
前端·pnpm·工程化
猫猫不是喵喵.6 小时前
Vue3 Props 属性
前端·javascript·vue.js
醉城夜风~7 小时前
CSS元素显示模式(display)
前端·css
AI大模型-小华8 小时前
Codex 三方充值快速入门指南
java·前端·数据库·chatgpt·ai编程·codex·chatgpt pro
做前端的娜娜子10 小时前
同一链接实现 PC Web 与移动 H5 自适应
前端·掘金·金石计划
小帅不太帅10 小时前
架构没变、规模没变,DeepSeek V4 Flash 正式版凭什么暴涨 47 分?
前端·aigc·deepseek
jarvisuni11 小时前
DeepSeekFlash前端依旧拉垮,而且变慢了很多!
前端·javascript·算法
卷福同学12 小时前
AI编程出海第二步:验证关键词能否做站
前端·人工智能·后端