14
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

オプショナルチェイニングのドキュメント見て、jsの関数ってオブジェクトだったわと再認識した

Posted at

はじめに

こんにちは。皆さん、箱アイス買いますか?夏になるとパッケージの裏がはがきになってて、懸賞応募できるようになっているアイスとかありますよね!私は毎年あずきバー食べて送ってます、筆者です:v:

(当たったことはないです。)

さて、たまにMDNのJavaScriptのドキュメントを眺めているのですが、オプショナルチェイニングってご存じでしょうか?

これ↓

ざっくり、存在しないプロパティのときにエラーにならないでundefinedで済むうれしいやつです。
PHP使いの方には、PHP8で追加されたNullsafe operatorとほぼ同じやつです:pray:

サンプルコード

const adventurer = {
  name: 'Alice',
  cat: {
    name: 'Dinah'
  }
};

const dogName = adventurer.dog?.name;
console.log(dogName);
// expected output: undefined

本題

オプショナルチェイニングですが、関数にも使えるんです!
普段PHPばっかり書いている自分からしたら、一瞬ぽかんでしたが、そういえばJavaScriptって関数はオブジェクトだったということを思い出して、**そりゃいけるわ!**と納得しました :smile:

console.log(adventurer.someNonExistentMethod?.());
// expected output: undefined

JavaScriptの関数はオブジェクト

JavaScript において、関数は第一級オブジェクトです。すなわち、関数はオブジェクトであり、他のあらゆるオブジェクトと同じように操作したり渡したりすることができます。具体的には、関数は Function オブジェクトです。

おわりに

関数にオプショナルチェイニングを使用したときの、今まで見たことない ?.() の部分の文字列の並びにちょっとしびれました。

それでは!

14
5
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?