「オブジェクト指向 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用語辞典