43
19

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.

Advent Calnder.png

はいよ。

つい先日、電動昇降デスクを買って気分上々↑↑の一般男性です。
よろしくおねがいします。

これは bosyu Advent Calendar 2019 の 12日目の記事でごわす。

よろしくね。

今回は個人的にずっとこれ欲しかったんすよ。っていうアレがES2020ではいりそうなので紹介するぞ!

Optional Chaining for JavaScript

みんなJSで

const fuga = object.hoge && object.hoge.fuga;

こういうの書くじゃん?
めっちゃ出てきたりするじゃん?

これをこうして

const fuga = object.hoge?.fuga;

こうじゃ。

優勝でしょこれ。

勝ち申したわ。

こんなかんじで function もうまく扱える。

const fuga = hoge?.();

こんな調子でできちゃう。
いいでしょ。

これを数年待ってた。

Nullish Coalescing for JavaScript

上のとにたやつですね。(雑)

const fuga = object.hoge || 'default fuga';

こういうの。
ここで object.hoge が空文字や0の場合、どうなるかというと'default fuga'になってしまいますよね。
多分意図していないですよね。

地味に困るというか面倒なやつですが、これを回避できるようになります!

const fuga = object.hoge ?? 'default fuga';

なんだよ??って

これで上の問題が回避されます!
nullundefinedの場合だけデフォルトの値が入るような感じになるわけですね〜。
優秀では????

あわせ技

この2つを合わせて使うとめちゃいい

const fuga = object.hoge?.fuga ?? 'default value';

object.hoge.fuga が 無いときは 'default value' を返すやつですね。
とても見やすい。

これを今のJSで書こうとすると

const fuga = object.hoge && object.hoge.fuga || 'default value';

こういう感じ?あってんの?
正確には0の場合とかがあるので違うけども。

まあパット見分かりづらいものが、だいぶ読みやすいものになるかなぁと思います!

最高!

今すぐ体験せよ

実はbabelのstage-3で使える。

最高の Optional Chaining と Nullish Coalescing を今すぐ体験せよ!!!

43
19
0

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
43
19

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?