2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

新人殺しの多項式

if文書くのめんどくさいとか、如何にコード量を減らそうという思いで、自分はよく使う多項式。

こんなん
let a: boolean;
// 何か処理
const b = a ? 1 : 2; // aがtrueなら1、falseなら2

// 教科書通りに普通に書くなら
let c;
if(a){
  c = 1;
} else {
  c = 2;
}

研修上がりの新人とか、本とかで勉強してきた人たちを簡単に絶望の淵に落とすことが出来るであろうこの特殊な書き方。
酷いときには多項式内に多項式がネストするような場合もあったり、条件部分がクソ長くて読む気失せるみたいなときもあるアレ。

こんなん
let a: boolean, b: boolean, c: boolean;
// 何か処理
const d = a ? b ? c ? 1 : 2 : 3 : 4;

もはやif文で書けよと言いたくなるコレ。

構文としては「条件 ? trueの時に入れるやつ : falseの時に入れるやつ」ってだけなので、
まだ比較的覚えやすいとは思うんだけど。。。

更にわけわからんやつ

で、今日ちょっとドツボにはまったヤツがこちら

こんなん
let a: string;
// 何か処理
const d = a ?? "??ってなんやねん!";

実装わけわからなくなりすぎて「?」2個も付けてしまったんか?と思うようなこの書き方、
「Null 合体演算子」って言うたいそうな名前がついており、

左辺(上で言う a)が null か undefined だったら、右辺("??ってなんやねん!")を(bに)代入する

という動きをします。

何でハマったか?

こいつ、説明にも書きましたが、 null か undefined の時にしか発動しないわけで、
stringの空文字('')は値がある判定することをしっかり完璧に忘れてて、
「えっ、全然代入されない…ブラウザの不具合じゃね?」 と自分のミスを棚に上げて、
天下のChrome様を疑うゲスの極みみたいなことをやってました。

ちなみに空文字以外には、0も値ある判定になるため、気をつけなはれや!

詳しい説明はこちら

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?