While条件で配列pop割り当てを使用するコードスニペットを見ただけです。これが許容できる/良い習慣かどうか疑問に思っていましたか?
var arr = [0,1,2,3,4,5];
var current;
while (current = arr.pop())
{
// do stuff to each element stored in current
}
コードが想定されていることを実行する場合、必ずしも間違っているわけではありませんが、そのような決定これは個人的に書かれたコードの好みや意見の問題になる可能性があるためです。逆に、このロジックの特定の配置を回避することは、雇用主の要件である場合があります。
考慮すべき事項は次のとおりです。
具体的には、例のコードを使用する長所と短所をいくつか示します。
undefined
、null
、0
、false
、NaN
、""
が含まれているか、「穴」がある場合、この方法は失敗します。「穴」とは、配列の長さが0より大きく、配列の要素の一部(またはすべて)に値が割り当てられていない場合を意味します。
「真実」とは、偽と評価されない値を意味します(短所を参照)。 NaN
または""
をお忘れなく。
あなたの例のコードはすでにバグを含んでいます。配列の最初の要素は失われます。どうして?最初の要素はゼロであり、割り当てステートメントで使用されると、値0を返します。これは、whileループによってfalseとして扱われます。つまり、whileループは、「スタック」の最後の項目を処理する前に停止するか、または最初の要素です。配列内。
キューまたはスタックのように配列を処理することが目的である場合、アイテムは処理されるときに削除されますyes。これはかなり標準的なアプローチです。
実際、スタックオーバーフロー、または一時停止と再開の必要性が再帰的解決策の潜在的な問題であるツリートラバーサルのこの種のループがときどき見られます。