在本教程中,您将学习如何定义返回多个值的 JavaScript 函数。

JavaScript 函数可以返回单个值。要从函数返回多个值,您可以将返回值打包为数组的元素或对象的属性。

使用数组从函数返回多个值

假设以下 getNames() 函数从后端数据库或第三方 API 调用的结果中检索 firstName 和 lastName,并将它们作为数组的元素返回:

function getNames() {
    // 从数据库或者API获取 firstName 和 lastName
    let firstName = 'John';
    let lastName = 'Doe';

    // 作为一个数组返回
    return [firstName, lastName];
}

下面展示如何从 getNames() 函数中获取返回值:

let names = getNames();

因为 names 变量是一个数组,所以您可以使用方括号获取它的元素,如下所示:

const firstName = names[0];
const lastName  = names[1];

在 ES6,您可以使用解构赋值语法更直观地从数组获取元素,如下所示:

const [firstName, lastName] = getNames();

在此代码中,firstNamelastName 变量将获取返回数组的第一个和第二个元素。

使用对象从函数返回多个值

如果你想为每个返回值分配一个名称以使其更具可读性和更易于维护,你可以使用一个对象

function getNames() {
  // 从数据库或者API获取 firstName 和 lastName
  let firstName = 'John',
      lastName = 'Doe';

  // 返回值
  return {
    'firstName': firstName,
    'lastName': lastName
  };
}

由于属性的名称与变量的名称相同,您可以使用ES6 的对象字面量语法来缩短它,如下所示:

function getNames() {
  // 从数据库或者API获取 firstName 和 lastName
  let firstName = 'John';
  let lastName  = 'Doe';

  return { firstName, lastName };
}

您可以像这样读取作为返回值的对象:

let names = getNames();

let firstName = names.firstName;
let lastName  = names.lastName;

如果要从对象中解构属性,可以使用对象解构语法,如下所示:

let { firstName, lastName } = getNames();

结论

  • JavaScript 不支持返回多个值的函数。但是,您可以将多个值封装装到一个数组或一个对象,然后返回该数组或对象。
  • 使用解构赋值语法从数组解构元素,或从对象解构属性。