遅延評価を利用した汎用的なプログラミングテクニック

person using MacBook Pro

「オブジェクト指向 JavaScript」を読んでいたところ、遅延評価を使ったプログラミングテクニックが紹介されていたので、覚えることにした。自分では使わないにしても、他人のコードを読んだときには理解できるようにしたい。

オペランドとは

コンピュータプログラミングにおいて、演算の対象となる値や変数のことである。「被演算子」と訳されることもある。
演算内容をあらわす記号などは「演算子」または「オペレータ(operator)」という。例えば「A+10」という式では、「A」と「10」がオペランドで、「+」がオペレータである。

遅延評価とは

論理演算子を繋いだ式を評価するときに、最後の演算子の直前までに結果が明確になっているときは、最後のオペランドの内容が結果に影響を与えないため、最後の演算子の実行はスキップされる。

if(false || true || false || false || true) {
    //何らかの処理
}

上記では、if文の条件は真と評価され、if文の中の処理が実行される。

論理演算のルール

演算 結果
true && true true
true && false false
false && true false
false && false false
true || true true
true || false true
false || true true
false || false false

遅延評価を用いたテクニック

論理演算のオペランドにBoolean型ではない式がくると、Boolean型ではない結果になる。

true || "Smokydog" //評価後、真偽値trueが返される
true && "Smokydog" //評価後、文字列Smokydogが返される

このテクニックは、既に定義されているかどうか分からない値を使って変数の値を初期化するときにたまに使用される。次の例では、変数dogが既に定義されているときはその値がそのまま使用され、そうでなかった場合には文字列Smokydogで初期化する。

var dog = dog || "Smokydog";

以上になります。

参考資料
書籍 オブジェクト指向 JavaScript
オペランドとは 【 operand 】 – 意味/解説/説明/定義 : IT用語辞典

投稿者 SmokyDog

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です