1. 变量声明:let 和 const
- let:声明块级作用域变量,在循环代码块中声明的let变量,只在该代码块内有效。这解决了ES5中var声明的变量具有函数作用域或全局作用域导致的问题。
- const:声明块级作用域变量,但需要在声明时初始化赋值,赋值后不能再重新赋值修改其值。如果const声明的是一个对象或数组,不能重新赋值整个对象或数组,但可以修改对象的属性值或数组的元素值。
2. 箭头函数(Arrow Functions)
箭头函数提供了一种更简洁的函数书写方式,使用=>
语法。它不会创建自己的this
上下文,而是继承外层函数的this
值,这在处理回调函数和对象方法时非常有用,可以避免this
指向错误的问题。此外,箭头函数没有自己的arguments
对象,但可以通过剩余参数(...args
)来获取参数。
3. 模板字符串(Template Strings)
模板字符串是增强版的字符串,用反引号(`
)标识。它允许在字符串中嵌入表达式(使用${}
包裹),并且可以保留字符串中的空格和缩进,使得字符串的拼接和处理更加方便、灵活和易读。
4. 解构赋值(Destructuring Assignment)
解构赋值允许按照一定模式,从数组或对象中提取值,并将其赋给变量。这有助于简化代码和提高可读性。解构赋值不仅可以用于数组,还可以用于对象,甚至可以设置默认值。
5. 类和继承(Classes and Inheritance)
ES6引入了类的概念,使得面向对象编程在JavaScript中更加直观和方便。类通过class
关键字定义,支持构造函数、实例方法、静态方法等。同时,ES6还支持类之间的继承关系,通过extends
关键字实现。
6. Promise
Promise是一种处理异步操作的方式,它提供了一种更好的控制流和错误处理机制。Promise代表了一个最终可能完成(也可能失败)及其结果值的异步操作。
7. 符号(Symbol)
Symbol是ES6的一种新的基本数据类型,用于表示一个独一无二的值。Symbol类型的值可以作为对象的属性名,以确保属性名的唯一性,从而避免属性名冲突的问题。
8. 默认参数(Default Parameters)
ES6允许在函数声明时为参数设置默认值。这样,在调用函数时如果省略了某些参数,函数将使用这些默认值。这有助于简化函数调用的代码,并减少因参数缺失而导致的错误。
9. 扩展运算符(Spread Operator)
扩展运算符(...
)允许一个表达式在某些地方展开为多个元素(用于数组)或多个键值对(用于对象)。它主要用于函数调用、数组字面量、模板字符串和解构赋值等场景中。