2017-04-02 14 views
1

関数内の値をcと連結し、毎回5を追加しようとしています。しかし、私はエラーUncaught ReferenceError: Invalid left-hand side in assignmentを得ています。誰かが回避策を知っていますか?私は+演算子を連結として使用できず、+=で使用すると仮定していますか?私はなぜこれが動作していないのか混乱しています。場合文字列を関数内で変数と連結するときに左辺引数が無効です

var c1 = 0; 
var c2 = 0; 

function(d) { 
    d.number; //possible value of 1 or 2 
    c + d.number += 5; //isn't this c1 += 5, or c2 += 5? 
    "c" + d.number += 5; //also tried this - same error 
    console.log(c1); 
    console.log(c2); 
;} 
+0

任意の代入演算子の左側は単純な変数またはプロパティの参照でなければなりません。あなたがしようとしていることは* JavaScript *で可能です*しかし、それは慣用ではありません。変数の代わりに 'c1'と' c2'オブジェクトのプロパティを作ることができ、 '[]'演算子を使ってプロパティの名前を作ることができます。あるいは、実際に配列として使用したい場合は、2つの別々の変数の代わりに 'c'を配列にしてください。ありがとう、@ Pointy。 – Pointy

+0

私はそれを書き直し、意図したとおりに働いています。 –

答えて

2

とんがりはコメントで言ったことは明らかではない、それは[ ]演算子を使用して、オブジェクトのプロパティだとき、あなたは(あなたがやろうとしているとして)変数名を「構築」することができます。ここ

は一例であり:

var cObj = {}; 
cObj.c1 = 0; 
cObj.c2 = 0; 

function(d) { 
    cObj['c' + d.number] += 5; 
    console.log(cObj.c1); 
    console.log(cObj.c2); 
;} 
+0

はい!それは素晴らしい仕事でした。迅速な対応をありがとう。 –

+0

可能であれば、問題は解決しますので、ご了承ください。チームの努力のためにPointyに感謝します。 – jakeehoffmann

関連する問題