【问题标题】:Concatenating string with number in Javascript在Javascript中将字符串与数字连接
【发布时间】:2011-01-11 13:46:31
【问题描述】:

我正在尝试用 Javascript 创建一个简单的计算器。我有一个名为表达式的数组 chunk[0] = 12 chunk[1] = +(“+”号) chunk[1] = 5

我使用了一个 for 循环来遍历块 (chunk[]),然后加入单个表达式,如下所示:-

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。 但是 alert(equation) 显示 125(而不是“12+5”)。我需要将变量 equation 设为“12+5”,以便稍后调用 eval(equation) 并获得 12+5 的值。

我在这里做错了什么?

【问题讨论】:

  • chunk[1] = +时不会出现语法错误吗?
  • jsfiddle.net/7y4Ha 进行了快速测试——一切正常。您是否尝试过equation = equation + expression[i].toString(); 来防止错误的类型转换?如果我的预设是错误的,请纠正我。
  • @Nikita 我只是在展示他们的内容。我的意思不是分配任务 :-) 对不起,如果它让你感到困惑。
  • @Samuel Herzog 小提琴更正了原始问题中的错字,因此chunk[1] 不再是'+',而是被覆盖为5

标签: javascript string-concatenation


【解决方案1】:

如果你有chunk = [ 12, '+', 5];,那么你可以做var eq = chunk.join("");,然后将它传递给eval

【讨论】:

  • 不小心使用eval不是个好主意。
【解决方案2】:

你做错了什么?你有一个小错字。

修改问题的代码

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

【讨论】:

  • 在原始问题中,'' 和 '5' 都分配给了 chunk[1] 我认为作者打算将 '+' 分配给 chunk[1] 和 '5'到块 [2]。如原始问题所述,他将两个值都分配给了块 [1],因此用值“5”覆盖了值“+”。这也解释了观察到的行为。
猜你喜欢
  • 2013-06-02
  • 2015-05-20
  • 1970-01-01
  • 1970-01-01
  • 2010-11-25
  • 2014-04-29
  • 2014-08-30
  • 2013-01-13
相关资源
最近更新 更多