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??B
で A
が undefined
または null
のとき B
を返し、それ以外は A
を返します。
本題 「まだ in を使ってるの?」
前提
受け取ったobject
にtext
プロパティがあるときコンソールに出力し、なければ"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-");
}
なんて便利なんだ