
No.3ベストアンサー
- 回答日時:
意味は「piyo[b][a]に入っている数値を安全に返したい」です
もしpiyo[b]が未定義ならpiyo[b][a]にアクセスしようとするとエラーになってしまいます
そのためまず、piyo[b] && piyo[b][a]で、piyo[b]が真、つまりオブジェクトならば、piyo[b][a]を評価します。
つまりpiyo[b] && piyo[b][a]はundefinedか、piyo[b][a]になることが期待できます
次に||0で、偽ならば0を返します
つまり、piyo[b]が未定義のときのundefinedや、piyo[b][a]が未定義のときのundefined、また、piyo[b][a]が0のときは偽と評価されるので0になります。
以上より、piyo[b] && piyo[b][a] || 0はpiyoの構造がある程度しっかりしてなくとも、安全に数値(初期値0)を返すことができます。
ただし、完璧に保証できるわけではありません。
例えば、piyo自体がnullやundefinedになる危険性がある場合はさらなるチェックが必要です。
よってこのコードからは、piyoは二次元数値配列であってほしいのだけど、添字が事前にわからないため、最初は一次元配列としてしか初期化していなくて、あとから追加していく形、でも取得するときは、まだ追加されていないときでも、安全に0を返したいのだと分かります。
No.5
- 回答日時:
A && B
は、Aが真の時に B と、そうでないときには A と評価される式です。
例えば、Aが真なら return A && B; はBを返します。
A || B
は、Aが真の時に A と、そうでないときには B と評価される式です。
例えば、Aが真なら return A || B; はAを返します。
その式がやりたいことは、ANo.3の説明の通りでしょう。
> ANo.4
> それならば、個人的には以下をオススメします。
> !!(piyo[b] && piyo[b][a])
それだと piyo[b][a] に 1 とか 10 とかが入っていても
全部trueが返ってきてしまいます・・・。
return (piyo[b] && piyo[b][a]) || 0;
なら piyo[b][a] に 1 とか 10 が入っていれば
ちゃんと 1 とか 10 を返してくれます。
この回答へのお礼
お礼日時:2014/07/09 10:26
回答&補足ありがとうございました
>A && B
>A || B
・この部分をよく理解できていなかったことに気がつきました
・説明分かりやすかったです
・参考になりましたー
No.4
- 回答日時:
簡単に言えば
piyo[b] が「存在」し true と評価できる値
piyo[b][a] が「存在」し true と評価できる値
ならば
→ piyo[b][a] の値 (true と評価できる)
でなければ
→ 0 (false と評価できる)
を「安全に」返す関数 hoge です
論理和 || を併用する意味ですが、
false と評価できる値を、
副作用なく簡単に作り出すためかと思いますが...
それならば、個人的には以下をオススメします。
!!(piyo[b] && piyo[b][a])
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ボタンをクリックすると数が増...
-
同じ型【ハイフンと数字】だけ...
-
HTTPSのとき":"が"%3A"ではなく...
-
MFCのキャプション変更
-
VC++のちらつき防止方法
-
Boolean型配列中のTrueの有無を...
-
コールバック関数(?)をループし...
-
Vb.netのグローバル変数の宣言...
-
【正規表現】【javascript】CR...
-
javascriptで文字挿入でtoggle...
-
Excel VBA の ChangeFileAccess
-
同じIDで定義した要素の配列を...
-
ActiveXobjectが作成できない
-
google apps scriptの終了のさせ方
-
雪を降らせるみたいな、ゆらゆ...
-
ASP.NET MVCでObjectをjsに渡す
-
ラジオボタンでreadonlyの切替え
-
C#OpenCv V4にのエラーに関する...
-
var_dumpのdump意味はを知りた...
-
Latexに関する質問です。
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
HTTPSのとき":"が"%3A"ではなく...
-
ボタンをクリックすると数が増...
-
Boolean型配列中のTrueの有無を...
-
サブウインドウから親ウインド...
-
Linux バイナリ実行できない "...
-
ASP+アクセスでのSQLコメントに...
-
Excel VBA の ChangeFileAccess
-
Vb.netのグローバル変数の宣言...
-
正規表現で半角数字1桁のみを全...
-
Objective-C 変数への代入エラー
-
console.logを使用して変数名と...
-
サンプルによく出てくるhogehog...
-
onclick="" の""を変えることが...
-
ifreamをリロードしたい
-
【Jquery】changeイベント毎にa...
-
クラス内からインスタンス先の...
-
MFCのキャプション変更
-
ひとつ上の階層にアクセスさせ...
-
【正規表現】【javascript】CR...
-
同じ型【ハイフンと数字】だけ...
おすすめ情報