Skip to content

Instantly share code, notes, and snippets.

@hyuki

hyuki/chat.md Secret

Last active July 29, 2023 05:40
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save hyuki/2b8761106b422bc9da609db1db3df573 to your computer and use it in GitHub Desktop.
Save hyuki/2b8761106b422bc9da609db1db3df573 to your computer and use it in GitHub Desktop.
#ChatGPT と結城浩の対話: JavaScriptにRubyのキーワード引数のようなものはありますか。

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 を取り出すように定義されています。これにより、関数を呼び出す際に一部の引数のみを指定するか、全く引数を指定しなくても、それぞれの引数にデフォルト値が適用されます。

@hyuki
Copy link
Author

hyuki commented Jul 29, 2023

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment