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-");
}
なんて便利なんだ