前提
- 特記しない限り、本記事ではエルビス演算子の実装としてPHP 5.3以降を例にします。
- 本記事はエルビス演算子と同等の動作を論理演算子で代用できる事だけを示すものであり、その是非については問いません。
概要
エルビス演算子(Elvis operator,?:
)は2つの値を指定し、左の値がtrueと評価されるものであれば左の値を、falseと評価されるものであれば右の値を返すものです。
三項演算子の2項目が省略されたようなもので、比較対象の値がfalse相当の場合のデフォルト値を設定するような用途に使えます。
以下がその例になります。
エルビス演算子
$c = $a ?: $b;
これは、以下のコードと意味的に等価です。
三項演算子の場合
$c = $a ? $a : $b;
if文の場合
if($a){
$c = $a;
}else{
$c = $b;
}
コード
上記の例を、JavaScriptで表現すると以下になります。
(var
宣言は省略しています)
c = a || b;
詳細
JavaScriptでは、論理演算子&&
||
の比較対象としてBoolean以外の値を指定した場合、その値をBooleanに変換せず返します。
よってJavaScriptでは論理演算子||
をエルビス演算子の代わりとして用いることが出来ます。
備考
論理演算子&&
||
がBoolean以外の値を返すのはJavaScriptに限った話ではありません。
他のプログラミング言語でもこのような実装になっている言語が存在します。
よってこの記事で紹介したテクニック(と呼べるほどの事かは疑問ですが)はJavaScript以外の言語でも利用できます。