5
2

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.

まだ in を使ってるの?

Last updated at Posted at 2020-06-17

TL;DL

function Say(obj) {
  if(obj && "text" in obj && obj.text){
    console.log(obj.text);
  }else{
    console.log("naiyo-");
  }
}

const hoge = {text: "hoge"};
Say(hoge);

// output --------
// hoge

function Say(obj) {
  obj = obj ?? {};
  console.log(obj?.text ?? "naiyo-");
}

const hoge = {text: "hoge"};
Say(hoge);
// output --------
// hoge

ECMAScript2020 がリリースされました🎉

6月16日に ECMAScript2020 が正式リリースされました!
個人的推しは ?.(Optional Chaining)??(Nullish coalescing Operator) です。
今回はそれについて書いていこうと思います。

?. Optional Chaining 🤔

詳細

?.(Optional Chaining) の詳しい仕様はMDNをお読みください。→ MDN

かんたんなせつめい

const A = {}
const hoge = A?.B; // hoge <- undefined;
const A = {B:"hoge"};
const hoge = A?.B; // hoge <- "hoge"

A.Bが undefined または null のとき undefined を返し、それ以外は A.B を返します。

?? Nullish coalescing Operator 🤔

詳細

上に同じく詳しい仕様はMDNで→MDN

かんたんなせつめい

const A = undefined;
const hoge = A ?? "undefined dayo"; // hoge <- "undefined dayo"
const A = "hoge";
const hoge = A ?? "undefined dayo"; // hoge <- "hoge"

??A??BAundefined または null のとき B を返し、それ以外は A を返します。

本題 「まだ in を使ってるの?」

前提

受け取ったobjecttextプロパティがあるときコンソールに出力し、なければ"naiyo-"を出力する。

これまで

function Say(obj) {
  if(obj && "text" in obj && obj.text){
    console.log(obj.text);
  }else{
    console.log("naiyo-");
  }
}

これから

function Say(obj) {
  obj = obj ?? {};
  console.log(obj?.text ?? "naiyo-");
}

なんて便利なんだ

5
2
2

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
5
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?