2011-01-11 18 views
0

私はJavascriptで簡単な電卓を作成しようとしています。私は、チャンク(チャンク[])を介してループするループに使用され、次のように単一の式に次に結合式 chunk[0] = 12chunk[1] = +(「+」記号)という名前の配列 chunk[1] = 5文字列をJavascriptで数字と連結する

を有する: -

equation = ""; // To make var equation a string 

for(i = 0; i <= length; i++) 
{ 
    equation = equation + expression[i]; 
    alert(expression[i]); 
} 

alert(equation); 

alert(expression[i]) 12、+および5 しかしアラート(式)は(代わりに "+ 5 12" の)125を示した値を示しました。私は変数式を "12 + 5"にして、後でeval(equation)を呼び出して12 + 5の値を得ることができるようにする必要があります。

私はここで間違っていますか?あなたはchunk = [ 12, '+', 5];を持っている場合

+2

'chunk [1] = +'と書いても構文エラーが発生しませんか? –

+0

はhttp://jsfiddle.net/7y4Ha/でクイックテストを行いました。すべて正常に動作します。間違った型変換を防ぐために 'equation = equation + expression [i] .toString();'を試しましたか?私のプリセットが間違っている場合は、私を修正してください。 –

+0

@Nikita私はちょうど彼らの内容が何であるかを示していた。それは私が意味する割り当てではありませんでした:-)それはあなたを混乱させる場合は悲しい。 – Sparky

答えて

0

あなたはvar eq = chunk.join("");を行うと、それはあなたが間違って何をしている

+0

'eval'を不注意に使うのは良い考えではありません。 – nightgaunt

0

をevalに渡すことができますか?あなたは小さなタイプミスがあります。

chunk[0] = 12 
chunk[1] = '+' 
chunk[1] = 5 

から

chunk[0] = 12 
chunk[1] = '+' 
chunk[2] = 5 

に質問にコードを修正し、すべてが動作するはずです。

なぜこの作品: +5両方が過剰書き込み+の(chunk[1]に)以前の割り当てを5と、chunk[1]に割り当てられています。表示された連結値が125

ため


部材chunk[0]12

第割り当てが新しいメンバを追加のコンテンツを含むコレクションの最初の割当結果、その結果である理由についても説明します
のコレクション、その内容12
コンテンツ+

あるメンバー chunk[1]あるメンバー

第三の割り当ては第2部材を上書きし、そして
そのコンテンツ12
chunk[1]そのコンテンツ5

すべてのチャンクの連結==部材である部材chunk[0]付きコレクション内の結果125

希望の連結== 12+5

+0

元の質問では、 ''と '5'の両方がチャンク[1]に割り当てられました 著者は、チャンク[1]に '+'を割り当て、チャンク[2]に '5' 。 元の質問で述べたように、彼は両方の値をチャンク[1]に割り当てたため、値 '5'で値 '+'を上書きしました。 これは、観察された動作についても説明します。 –