GPT-4
Date: 2023-07-29
Rubyのキーワード引数のようなものはJavaScriptの関数にはあるでしょうか。
JavaScriptは直接的なキーワード引数をサポートしていませんが、オブジェクトと分割代入を組み合わせてキーワード引数のような機能を模倣することができます。
例えば、次のような関数があるとします:
function greet({ name, age }) {
console.log(`Hello, my name is ${name} and I am ${age} years old.`);
}
この関数はオブジェクトを引数として受け取り、そのオブジェクトから name と age のプロパティを取り出します。この関数は次のように呼び出すことができます:
greet({ name: 'John', age: 23 });
この方法では関数の呼び出し側でどの引数がどのパラメーターに対応するか明示的に指定できるため、キーワード引数と同様の効果が得られます。
ただし、この方法では引数の順序を自由に変えられますが、すべての引数を指定する必要があります。一部の引数のみを指定することも可能ですが、その場合、関数の定義側でデフォルト値を設定しておく必要があります。以下に例を示します:
function greet({ name = 'Guest', age = 20 } = {}) {
console.log(`Hello, my name is ${name} and I am ${age} years old.`);
}
greet({ name: 'John' }); // "Hello, my name is John and I am 20 years old."
greet(); // "Hello, my name is Guest and I am 20 years old."
この例では greet 関数がデフォルト引数として空のオブジェクトを受け取り、分割代入を使って name と age を取り出すように定義されています。これにより、関数を呼び出す際に一部の引数のみを指定するか、全く引数を指定しなくても、それぞれの引数にデフォルト値が適用されます。
https://twitter.com/hyuki/status/1685163273543700480