- 2008-07-07 (月) 21:26
- JavaScript
コメントでe–reiさんより以下のようにOR演算子(||)についての質問をいただいたので解説してみます。
JQuery,MooTools,他多数ライブラリ内部で (例) 1 :var SomeClass = Class.create(); 2 :SomeClass.prototype = { 3 : initialize: function(options){ 4 : Object.extend( 5 : this, 6 : Object.extend({ 7 : property1: 1, 8 : property2: 2 9 : }, options || {}); 10: ); 11: } 12:}; の様なソースがあったとして、 9行目の”options || {}”様な書き方がされているのをよく見るのですが、 これはどの様な読み方なのでしょうか。
OR演算子(論理和演算子・Logical OR Operator)は通常、if文の中で左右のどちらかがtrueであればtrueと判定したい場合に使います。
if (a < 1 || b > 2) {
//aが1未満、またはbが2より大きい場合に実行されるスクリプト
}
質問のような使い方をする場合は||の動作について知っておく必要があります。||があった場合以下のように処理されます。
- まずは左側の式がtrueかどうか調べる
- 左側の式がtrueの場合は左側の式をそのまま返す
- 左側の式がfalseの場合は右側の式がtrueかどうか調べる
- 右側の式がtrueの場合は右側の式をそのまま返す
- 両方ともfalseならfalseを返す
この性質を利用すると特定の変数がundefindなど設定されていなかった場合、他の値を使うということができます。
var foo = bar || 0;
このように書くとbarがtrueの場合(つまり値が設定されているなどの場合)はbarの値を、undefindなど設定されていない場合は0を使うことになります。デフォルト値を設定する際に使うと便利です。もちろん同じ式をif文を使って書くこともできますが、だいぶ長くなってしまいます。
var foo;
if (bar) {
foo = bar;
} else {
foo = 0;
}
質問でいただいた”options || {}”はoptionsがあればそれを使い、なければ空のオブジェクトを使うという意味になります。
参考:オライリー JavaScript 第5版 5.7.2 論理和演算子(||)
- Newer: JavaScriptでの1文字変数名の慣習
- Older: yuga.js 0.6.3 - 優雅なWeb制作のためのJavaScript
Comments:1
- e--rei 08-07-07 (月) 21:48
-
ありがとうございます。
大変わかりやすい解説で勉強になりました。
長文のライブラリの解析(利用にあたっての内部の確認程度です)、
Fire bugを使ってのデバッグにまだ慣れていない事も相まって
どの場合にどの値が渡ってくるのか等の確認が甘かった様です。お忙しい中解説していただきありがとうございました。
Trackbacks:0
- Trackback URL for this entry
- http://blog.kyosuke.jp/2008/07/07/57/trackback
- Listed below are links to weblogs that reference
- OR演算子を使ったデフォルト値の設定 from inputlog