变量声明
ES6引入了let
和const
替代var
。let
用于声明可变的块级作用域变量,const
用于声明不可变的常量。块级作用域有效避免了变量提升和污染全局的问题。
javascript
let name = 'Alice';
const PI = 3.1415;
箭头函数
箭头函数简化了函数写法,且自动绑定当前上下文的this
值。适合用于回调函数或需要保留this
的场景。
javascript
const add = (a, b) => a + b;
array.map(item => item * 2);
模板字符串
使用反引号()包裹字符串,支持多行文本和嵌入变量。表达式通过
${}`插入。
javascript
const user = 'Bob';
console.log(`Hello ${user},
Today is ${new Date().toDateString()}`);
解构赋值
从数组或对象中提取值并赋值给变量。简化数据提取过程,支持嵌套和默认值。
javascript
const [x, y] = [1, 2];
const {name, age} = {name: 'Tom', age: 20};
默认参数
函数参数可以设置默认值,避免手动检查undefined
。
javascript
function greet(name = 'Guest') {
return `Hello ${name}`;
}
扩展运算符
...
可用于展开数组或对象,常用于合并数据或函数传参。
javascript
const arr1 = [1, 2];
const arr2 = [...arr1, 3]; // [1, 2, 3]
const obj = {...oldObj, newProp: 'value'};
Promise
Promise用于异步操作管理,通过then
和catch
处理成功或失败状态。避免了回调地狱。
javascript
fetch(url)
.then(response => response.json())
.catch(error => console.error(error));
模块化
ES6模块通过import
和export
实现代码组织。支持按需加载和静态分析。
javascript
// module.js
export const api = 'https://example.com';
// main.js
import {api} from './module.js';
类语法
class
关键字提供更清晰的面向对象编程语法,包含构造函数、继承和静态方法。
javascript
class Person {
constructor(name) {
this.name = name;
}
greet() {
return `Hello ${this.name}`;
}
}
迭代器与生成器
Symbol.iterator
定义迭代协议,function*
生成器函数可暂停执行。用于自定义遍历逻辑。
javascript
function* idGenerator() {
let id = 1;
while(true) yield id++;
}
const gen = idGenerator();
gen.next().value; // 1