前端JS: ES6新特性

ES6 核心新特性与示例

1. let 与 const

定义 :新的变量声明方式,let声明块级作用域变量,const声明常量(不可重新赋值)。

ini 复制代码
// let 示例
let x = 10;
if (true) {
  let x = 20; // 不同的变量
  console.log(x); // 20
}
console.log(x); // 10

// const 示例
const PI = 3.14159;
// PI = 3.14; // 报错:不能重新赋值
const user = { name: "Alice" };
user.name = "Bob"; // 允许修改对象属性

2. 箭头函数

定义 :使用 =>语法的简洁函数形式,不绑定自己的 this

javascript 复制代码
// 传统函数
function add(a, b) {
  return a + b;
}

// 箭头函数
const addArrow = (a, b) => a + b;

// this 绑定差异
const obj = {
  value: 10,
  traditional: function() {
    setTimeout(function() {
      console.log(this.value); // undefined
    }, 100);
  },
  arrow: function() {
    setTimeout(() => {
      console.log(this.value); // 10
    }, 100);
  }
};

3. 模板字符串

定义:使用反引号(`)定义的字符串,支持多行和嵌入表达式。

ini 复制代码
const name = "Alice";
const age = 25;

// 传统拼接
const str1 = "姓名:" + name + ",年龄:" + age;

// 模板字符串
const str2 = `姓名:${name},年龄:${age}`;
const multiLine = `
  第一行
  第二行
  计算结果:${5 + 3}
`;
console.log(str2); // 姓名:Alice,年龄:25

4. 解构赋值

定义:从数组或对象中提取值到变量中的简洁语法。

ini 复制代码
// 数组解构
const colors = ['red', 'green', 'blue'];
const [first, , third] = colors;
console.log(first, third); // red blue

// 对象解构
const person = { name: 'Bob', age: 30, city: 'Beijing' };
const { name, city } = person;
console.log(name, city); // Bob Beijing

// 默认值
const { phone = '未知' } = person;
console.log(phone); // 未知

5. 默认参数

定义:函数参数可以指定默认值。

javascript 复制代码
function greet(name = "访客", message = "你好") {
  return `${message},${name}!`;
}

console.log(greet()); // 你好,访客!
console.log(greet("Alice")); // 你好,Alice!
console.log(greet("Bob", "欢迎")); // 欢迎,Bob!

6. 扩展运算符

定义 :使用 ...展开可迭代对象。

ini 复制代码
// 数组合并
const arr1 = [1, 2];
const arr2 = [3, 4];
const combined = [...arr1, ...arr2, 5];
console.log(combined); // [1, 2, 3, 4, 5]

// 对象合并
const obj1 = { a: 1, b: 2 };
const obj2 = { c: 3, d: 4 };
const merged = { ...obj1, ...obj2, e: 5 };
console.log(merged); // {a: 1, b: 2, c: 3, d: 4, e: 5}

// 函数参数
const numbers = [1, 5, 3, 9];
console.log(Math.max(...numbers)); // 9

7. Promise

定义:处理异步操作的标准化方案。

javascript 复制代码
function asyncTask(success) {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      if (success) {
        resolve("操作成功");
      } else {
        reject("操作失败");
      }
    }, 1000);
  });
}

// 使用
asyncTask(true)
  .then(result => console.log(result)) // 操作成功
  .catch(error => console.error(error));

// 链式调用
asyncTask(true)
  .then(data => data + "!")
  .then(finalData => console.log(finalData)); // 操作成功!

8. 模块化

定义:原生的模块导入导出语法。

javascript 复制代码
// math.js
export const PI = 3.14159;
export function square(x) {
  return x * x;
}
export default function add(a, b) {
  return a + b;
}

// main.js
import add, { PI, square } from './math.js';
console.log(add(2, 3)); // 5
console.log(PI); // 3.14159
console.log(square(4)); // 16

这些特性极大地提升了JavaScript的开发效率和代码可读性,是现代前端开发的基础。

相关推荐
~无忧花开~1 小时前
React状态管理完全指南
开发语言·前端·javascript·react.js·前端框架
LegendNoTitle1 小时前
计算机三级等级考试 网络技术 选择题考点详细梳理
服务器·前端·经验分享·笔记·php
@大迁世界2 小时前
1.什么是 ReactJS?
前端·javascript·react.js·前端框架·ecmascript
BJ-Giser2 小时前
Cesium 基于EZ-Tree的植被效果
前端·可视化·cesium
王码码20353 小时前
Flutter for OpenHarmony:Flutter 三方库 algoliasearch 毫秒级云端搜索体验(云原生搜索引擎)
android·前端·git·flutter·搜索引擎·云原生·harmonyos
发现一只大呆瓜3 小时前
深入浅出 AST:解密 Vite、Babel编译的底层“黑盒”
前端·面试·vite
天天鸭4 小时前
前端仔写了个 AI Agent,才发现大模型只干了 10% 的活
前端·python·ai编程
发现一只大呆瓜4 小时前
前端模块化:CommonJS、AMD、ES Module三大规范全解析
前端·面试·vite
IT_陈寒4 小时前
一文搞懂JavaScript的核心概念
前端·人工智能·后端
IT_陈寒4 小时前
Java开发者必看!5个提升开发效率的隐藏技巧,你用过几个?
前端·人工智能·后端