概要: このチュートリアルでは、複数の値を返すJavaScript関数を定義する方法を学びます。
JavaScript関数は単一の値を返すことができます。関数から複数の値を返すには、戻り値を配列の要素として、またはオブジェクトのプロパティとしてパックできます。
配列を使用して関数から複数の値を返す
次のgetNames()
関数は、バックエンドのデータベースまたはサードパーティAPI呼び出しの結果から、名と姓を取得し、それらを配列の要素として返すことを想定しています。
function getNames() {
// get names from the database or API
let firstName = 'John',
lastName = 'Doe';
// return as an array
return [firstName, lastName];
}
Code language: JavaScript (javascript)
以下は、getNames()
関数から戻り値を取得する方法を示しています。
let names = getNames();
Code language: JavaScript (javascript)
names
変数は配列であるため、次のように角かっこを使用して要素を参照できます。
const firstName = names[0],
lastName = names[1];
Code language: JavaScript (javascript)
ES6では、分割代入構文を使用して、配列から値をより直感的に展開できます。例えば次のようになります。
const [firstName, lastName] = getNames();
Code language: JavaScript (javascript)
このコードでは、firstName
変数とlastName
変数は、戻り値の配列の最初と2番目の要素を受け取ります。
オブジェクトを使用して関数から複数の値を返す
返された各値に名前を付けて、より読みやすく、保守しやすくしたい場合は、オブジェクトを使用できます。
function getNames() {
// get names from the database or API
let firstName = 'John',
lastName = 'Doe';
// return values
return {
'firstName': firstName,
'lastName': lastName
};
}
Code language: JavaScript (javascript)
プロパティの名前は変数と同じであるため、次のようにES6のオブジェクトリテラル構文拡張を使用して短縮できます。
function getNames() {
// get names from the database or API
let firstName = 'John',
lastName = 'Doe';
return { firstName, lastName };
}
Code language: JavaScript (javascript)
そして、次のようにオブジェクトとして戻り値を取得できます。
let names = getNames();
let firstName = names.firstName,
lastName = names.lastName;
Code language: JavaScript (javascript)
オブジェクトからプロパティを展開する場合は、次のようにオブジェクトの分割代入構文を使用できます。
let { firstName, lastName } = getNames();
Code language: JavaScript (javascript)
概要
- JavaScriptは、複数の値を返す関数をサポートしていません。ただし、複数の値を配列またはオブジェクトにラップして、配列またはオブジェクトを返すことができます。
- 分割代入構文を使用して、配列から値、またはオブジェクトからプロパティを展開します。
このチュートリアルは役に立ちましたか?