2011-01-11 62 views
0

我想在JavaScript中創建一個簡單的計算器。我已經陣列命名錶達式 chunk[0] = 12 chunk[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 但警報(方程)顯示125(而不是 「12 + 5」)。我需要變量方程爲「12 + 5」,以便稍後可以調用eval(方程)並獲得12 + 5的值。

我在這裏做錯了什麼?

+2

你不應該得到語法錯誤編寫`塊[1] = +`? – 2011-01-11 13:49:56

+0

在http://jsfiddle.net/7y4Ha/做了一個快速測試 - 一切正常。您是否嘗試過`equation = equation + expression [i] .toString();`以防止錯誤的類型轉換?如果我的預設錯誤,請糾正我。 – 2011-01-11 13:57:34

+0

@尼基塔我只是在展示他們的內容。這不是我的意思:-)如果它讓你感到困惑, – Sparky 2011-01-11 14:01:37

回答

0

,如果你有chunk = [ 12, '+', 5];那麼你可以做var eq = chunk.join("");,然後將它傳遞給eval

0

你在做什麼錯?你有一個小錯字。

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

第二個任務增加了一個新成員的內容,並導致與
成員chunk[0],其內容是12
成員chunk[1],其內容是集合+

第三分配覆蓋的第二個會員和結果的收集與
成員chunk[0],其內容是12
成員chunk[1],其內容是5

所有塊的拼接== 125

期望串聯== 12+5