什么是ES6:
全称为ECMAScript 6.0,旨在解决ES5版本中的一些问题和不足,ES6引入了许多新的语法特性和API,如箭头函数、模块导入导出、类(Class)、Promise、let和const关键字、解构赋值、模板字符串、迭代器和生成器等。这些新特性使得JavaScript在编写复杂程序时更加简洁、高效和安全。
箭头函数的基本用法:
1.语法:箭头函数的语法是使用“=>”来定义函数,
const func = (arg1, arg2) => { statements }
如果函数体只有一句话,且这句话是返回语句,那么可以省略大括号和return关键字,如:
const func = (arg1, arg2) => return result
写成
const func = (arg1, arg2) => result
。
2.箭头函数可以作为匿名函数使用,也可以赋值给变量,作为普通函数调用。
3.箭头函数没有自己的this、arguments、super或new.target。这些值都是从定义箭头函数时所在的上下文中继承而来的。也就是说,箭头函数会捕获其所在上下文的this值,而不是执行时的this值。这是箭头函数与普通函数的一个重要区别。
注意:
- 箭头函数不能用作构造函数,也就是说,不能使用new关键字来调用箭头函数,否则会报错。
- 箭头函数中没有arguments对象。如果需要使用类似arguments的对象,可以使用剩余参数语法(...args)来代替。
- 由于箭头函数没有自己的this,所以不能用箭头函数来定义对象的方法,否则会导致this指向错误。
- 在setTimeout等异步回调中使用箭头函数,可以确保回调中的this指向正确的上下文。
解构赋值
将数组或对象的属性值直接赋给变量
数组
const [first, second] = [1, 2];
console.log(first); // 输出 1
console.log(second); // 输出 2
对象
const person = { name: 'Alice', age: 25 };
const { name, age } = person;
console.log(name); // 输出 'Alice'
console.log(age); // 输出 25
forEach( )方法遍历数组
forEach()
方法不会改变原数组,并且它没有返回值(或者说返回 undefined
)。这意味着你不能通过 forEach()
直接获取遍历的结果。
const numbers = [1, 2, 3, 4, 5];
numbers.forEach(function(value, index, array) {
console.log(`Index: ${index}, Value: ${value}`);
// 在这个例子中,我们不需要使用数组本身作为参数,所以通常省略它。
});
结果:
Index: 0, Value: 1
Index: 1, Value: 2
Index: 2, Value: 3
Index: 3, Value: 4
Index: 4, Value: 5
ES6简化:
const numbers = [1, 2, 3, 4, 5];
numbers.forEach((value, index) => {
console.log(`Index: ${index}, Value: ${value}`);
});
或
numbers.forEach((value, index) => console.log(`Index: ${index}, Value: ${value}`));
优点:
简洁易读:forEach()
提供了更简洁、更声明式的语法来遍历数组。相比于传统的 for
循环,它减少了样板代码,使得代码更易于阅读和维护。
易于使用:forEach()
方法内置在 JavaScript 的数组对象中,无需额外设置或初始化。只需提供一个回调函数,就可以轻松遍历数组。
自动索引管理:forEach()
会自动处理索引,将每个元素的索引作为回调函数的第二个参数提供。这样,开发者无需手动管理索引,减少了出错的可能性。
无需担心边界条件:由于 forEach()
是由 JavaScript 引擎实现的,因此它会自动处理边界条件,如数组为空或遍历完成后不会执行额外的迭代。
易于理解:forEach()
的语义非常明确,即“对数组中的每个元素执行某个操作”。这使得代码意图清晰,易于理解。
适用于并行处理:在现代 JavaScript 引擎中,forEach()
可能会进行某种形式的优化,使得遍历过程能够并行化,从而提高性能。