2011-03-25 7 views
1

私はこの権利をしているかどうかチェックしたいだけです。私はを開始し、機能foo()リターンが、しかし、私はいくつかの引数に対してfoo()をチェックし、それが今まで本当を設定されている場合に戻るbarしたくない場合は設定されている変数barを持っています。これは私が書いたものです:JavaScriptで真偽値がfalseに戻るのを防ぐ

var bar = false; 
var collection = []; // this is filled with arguments for foo 
for(var i = 0; i < collection.length; i++) { 
    bar = !foo(collection[i]) || bar; 
} 

すべきことはありますか?それとももっと簡単な方法がありますか?

+3

は「FOO()」あなたは、各メンバーのために起こるしたいという副作用を持っていますコレクション?また**ループ内の変数 "i"の 'var'を忘れることはありません!** – Pointy

+1

質問はちょっと混乱しますが、ORにbarを付けることによって、 。 pointyのポイントはどちらも良いものです - 心はバーがfooのスコープの外にある可能性が高いです。 – idbentley

+0

「偽に戻る」と言うと、「偽」に設定されているのですか?変数は返さず、関数だけが戻ります。 –

答えて

3
はこれを行うには、それはできるだけ早くそれがtrueに設定されているよう飛び出す必要があるループのためにあなたを変更

var bar = false; 
var collection = []; // this is filled with arguments for foo 
for(i = 0; i < collection.length && !bar; i++) { 
    bar = !foo(collection[i]) || bar; 
} 
+2

"i"の 'var'宣言を忘れないでください! – Pointy

+1

それはいい考えです。残念なことに、この場合、配列の要素ごとにfoo()を実行する必要があります。 – tamewhale

+1

@tamewhaleその場合、コードは正常に動作します。 jsfiddleで簡単にこのようなことをテストすることができます。http://jsfiddle.net/s6qN3/ –

関連する問題