ES6 对函数进行了一些有益的扩展,引入了一些新特性,以提高函数的灵活性和可读性。以下是 ES6 中函数的一些扩展:

1. 默认参数:

ES6 允许在函数声明时为参数设置默认值:
function greet(name = "Guest") {
    console.log(`Hello, ${name}!`);
}

greet();        // 输出:Hello, Guest!
greet("John");  // 输出:Hello, John!

2. 不定参数(Rest 参数):

使用不定参数可以将多个参数收集到一个数组中:
function sum(...numbers) {
    return numbers.reduce((acc, num) => acc + num, 0);
}

console.log(sum(1, 2, 3, 4)); // 输出:10

3. 展开运算符:

展开运算符可以将数组中的元素展开为单独的参数:
let numbers = [1, 2, 3, 4];
console.log(Math.max(...numbers)); // 输出:4

4. 箭头函数:

箭头函数是一种更简洁的函数定义方式,它没有自己的 this,而是继承外层作用域的 this:
// 传统函数
function add(a, b) {
    return a + b;
}

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

5. 函数的 name 属性:

函数对象的 name 属性可以获取函数的名称:
function greet() {
    console.log("Hello, World!");
}

console.log(greet.name); // 输出:greet

6. arguments 对象的不再随函数形参同步更新:

在 ES6 中,arguments 对象不再随函数形参同步更新,这样可以避免一些潜在的问题。

7. 尾调用优化:

ES6 规范中明确了对尾调用的优化支持,但并非所有 JavaScript 引擎都严格实现了这一特性。

8. Function.prototype.toString():

Function.prototype.toString() 方法现在返回精确的源代码表示,包括空格和注释。
function example() {
  // this is
  // an example
}

console.log(example.toString());
// 输出:
// function example() {
//   // this is
//   // an example
// }

这些 ES6 函数的扩展使得在编写和使用函数时更加方便和强大。


转载请注明出处:http://www.zyzy.cn/article/detail/4668/ES6