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

どちらのスニペットも同じことを実現します。最初のスニペットは、最終的な文字列を 1 回書き込むのではなく、文字列が作成されるときに値を 5 回上書きするため、パフォーマンスが低下します。

無関連:i暗黙のグローバルです。使用してvarください。

于 2012-09-04T19:04:11.323 に答える
0

どちらも同じ結果になります。

x = x + ...
于 2012-09-04T19:04:55.813 に答える
0

確かにそうです。各反復で新しいコードを x に追加し、それを要素に設定します。innerHTML を設定すると、要素のコンテンツ全体が上書きされます。

最初のループでは、各反復で要素の html が少し大きい html で上書きされますが、最後の反復では x の「完全な」値で上書きされます。

したがって、最終結果は同じですが、最初の結果はかなり遅くなります。

于 2012-09-04T19:05:24.640 に答える
0

2 つの例は同じです。最初の例では、変数の値が他の文字列と連結されているinnerHTML間に、反復ごとに上書きされているからです。x最後の反復までに、要素の合計値innerHTMLは になります。x

于 2012-09-04T19:05:28.323 に答える