0

@http ://jsfiddle.net/defencedog/rrKYW/

最近的一个观察,深深的侵占了我对js的认识。看下面的代码:

var x = "";

function postbody() {
    for (i = 0; i < 5; i++) {
        x = x + "<sup>" + i + "</sup><br/>";
        document.getElementById("posti").innerHTML = x;
    }

}​

上面的代码的输出类似于下面的输出,这对我来说是模糊的

var x = "";

function postbody() {
    for (i = 0; i < 5; i++) {
        x = x + "<sup>" + i + "</sup><br/>";

    }
  document.getElementById("posti").innerHTML = x;
}​

后一个代码必须给我一个(简明地说是x的最后一个值)输出而不是整个迭代输出?

4

4 回答 4

1

两个片段都完成了同样的事情;第一个片段只是性能较差,因为它会在字符串构建时覆盖该值 5 次,而不是写入最终字符串一次。

unrelated:i是一个隐式全局。使用var.

于 2012-09-04T19:04:11.323 回答
0

当然可以。您在每次迭代中向 x 添加新代码,然后在元素中设置它。设置 innerHTML 会覆盖元素的全部内容。

在第一个循环中,每次迭代都会用稍大的 html 覆盖元素的 html,但最后一次迭代是用 x 的“完整”值覆盖它。

所以最终结果是一样的,但是第一个结果要慢很多。

于 2012-09-04T19:05:24.640 回答
0

这两个示例是相同的,因为第一个innerHTML在每次迭代中都被覆盖,而变量的值x与其他字符串连接。在最后一次迭代中,元素innerHTML将具有x' 总值。

于 2012-09-04T19:05:28.323 回答
0

both will cause a same result.

x = x + ...
于 2012-09-04T19:04:55.813 回答