論理演算子+代入演算子!?コードがスマートなだけでなく処理もスマートに!【JavaScript】

JavaScript ES2021 論理演算子+代入演算子

ES2021の正式仕様リリースされました。
今回はそのうちの一つをご紹介します。
JavaScriptの標準規格にて「論理演算子」と「代入演算子」が組み合わさった書き方が追加されました。

論理演算子は、「&&」や「||」などの記号を使用して真偽値を評価する。
代入演算子は、代表的なものとして「=」では右辺の値を左辺に値を代入する。

上記の二つが組み合わさったこの機能どんな書き方かというと以下に例を

// 論理和代入
a ||= b;

// 論理積代入
a &&= b;

// null合体代入
a ??= b;

確かに組み合わさっている。
だが実際にどういった動作になるのか。

前提として、JavaScriptにおける「||」「&&」「??」の動作は、C#の動作とは異なることを明記しよう。
JavaScriptでいうところの彼らはC#に直すと下記の動作をする

JavaScriptC#
a ¦¦ b a ? a : b
a && b !a ? a : b
a ?? b a !== undefined && a !== null ? a : b

なるほど、C#では真偽を返す演算子だったがJavascriptの世界では三項条件演算子として使われるのか。
これに代入演算子が合わるということは下記の動作をすることとなる。

JavaScript C#
a ||= b a = a ? a : b
a &&= b a = !a ? a : b
a ??= b a = a !== undefined && a !== null ? a : b

この演算子には書き方が短くなっただけでなく別のメリットもある。
代入する動作はaがfalseと評価された場合にのみ評価がされ、代入が必要な場合にのみ実行される仕組みとなっている。
これにより処理の見た目だけでなく、実行されたときの処理までスマートになるという優れた機能。

まとめ

「¦¦=」「&&=」「??=」の演算子を使うことによって見た目がスマートになるだけでなく、

以下のコストが削減される。
・trueと評価されたときは代入処理を行わない。


コメントを残す

メールアドレスが公開されることはありません。

CAPTCHA