2016-07-01 16 views
0

ある日、配列内の要素を交換する方法を見ました。このように:Javascript。配列の初期化順序の要素

明らか
var arr = [1,2,3]; 
arr[0] = [arr[1], arr[1] = arr[0]][0]; 

この方法一時的な配列arr[1]の最初の値が2番目arr[1] = arr[0]前に計算されることを前提としています。
その他の場合、両方の値が同じになります。合成例:

var x = 1; 
var arr = [x, x += 1, x += 1]; 
arr; // [1,2,3] or [3,3,2] or maybe [3,2,3]? 

javascriptインタープリタがこのように動作しないという保証はありますか?

.1:

答えて

1

JSアレイイニシャライザは、左から右へ

ArrayAccumulation(:ElementList、エリジオン[OPT] AssignmentExpression ElementList)を評価することが保証されます。 postIndexを、引数arrayとnextIndexを持つElementListのArrayAccumulationを実行した結果としましょう...

.4。 AssignResultを評価した結果をinitResultとします。 http://www.ecma-international.org/ecma-262/6.0/#sec-runtime-semantics-arrayaccumulation

@

それはそのかかわらに依存しない方が良いでしょう。

+0

"*それにも頼らない方がいいですね。あなたは絶対にそれに頼ることができます。 – Bergi