为什么我不能在foreach中使用这样的添加?

时间:2010-02-22 08:45:21

标签: javascript

Javascript的foreach等价物:

for ( var i in products )
{
    document.write("Write" + i + 1 );
}

输出:

Write01

修改 我尝试将i解析为整数。

for ( var i in products )
{
    document.write("Write" + parseInt(i) + 1 );
}

2 个答案:

答案 0 :(得分:10)

因为i是一个数字,但是被第一个+强制转换为字符串。使用此:

for ( var i in products ) {
  document.write(""); document.write("Write" + (i + 1) );
  // ------------------------------------------^
}

答案 1 :(得分:1)

这里的问题是operator precedence。如该表所示,+运算符从左到右关联。

所以:

a + b + c

分组如下:

((a + b) + c)

因此,在原始代码中,表达式分组如下:

("Write" + i) + 1

换句话说,它是一个字符串连接,后跟另一个字符串连接。由于您打算首先进行算术加法(i + 1),因此必须明确对它们进行分组:

"Write" + (i + 1)