2011-01-11 63 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