2017-07-14 3 views
0

第三者によって書かれたJavascriptライブラリを変更しています。コードはほとんどの部分で機能します。構文エラーはありません。著者にコードについて尋ねることはほとんど不可能です。Javascript - コンマでプロパティにアクセスする - プログラマは何を意味しますか?

私はこの構造を見つけたので、プログラマーの意図を理解できません。

pages[uuid, elIndex] = 12; 

Chrome devtoolsを調べると、そのページがオブジェクトであることがわかります。 uuidは文字列、elIndexは数値です。

ここでは、複数のオブジェクトプロパティ間のコンマを理解することができません。これは非常にあいまいなJavascriptの構文ですか?このような「複数のプロパティ」にアクセスすることによって意味されるものは何ですか?

+0

多分、プログラマはこれが多次元配列アクセスであると考えました。 [それはそうではありません](https://stackoverflow.com/q/20645191/1048572)しかし、それ以上のコードはなく、我々はどちらか一方しか推測できません。 – Bergi

+0

これは間違いのようです。これは、プロパティ( "uuid"と "elIndex")の両方を12に設定するだけです.Uuidを12に設定することは意図されていなかったと思います。 –

+0

@AlexBiegいいえ、それは 'pages [elINdex] = 12'しか設定しません。コンマ演算子は配列アクセスよりも優先順位が低い – user3080953

答えて

2

これ:

pages[uuid, elIndex] = 12; 

は、正確に等しい:

pages[elIndex] = 12; 

これはめったに使用されないcomma operatorあります。

メソッド呼び出し(コンマで区切られた複数の引数を取る)とは異なり、配列インデクサーは単一の式を取ります。したがって、uuid, elIndexはカンマ演算子を使用する単一の式として解析されます。カンマ演算子は、両辺を評価し、次に左辺の値をスローし、右辺の値を返します。 for -loopイニシャライザで使用されることがありますが、それは大幅に縮小されたコードで使用されますが、そうでなければ、読めるコードを書こうとすると実際には大量のアプリケーションがありません。

上記のコメントでは、おそらくと考えていたので、は多次元配列のアクセスになりますが、そうではありません。それはちょうどpages[elIndex]です。

+1

ありがとうございました。大きな助け。これは実際にはhttps://stackoverflow.com/questions/20645191/undestanding-double-bracket-operation-in-javascriptと似たようなものです。おそらくプログラマはカンマ演算子に慣れていて、他のプログラマの混乱を混乱させないと仮定して、 "行う" –

関連する問題