0

众所周知:

i++ -> 先使用 i 然后增加它的值

++i -> 先增加 i 然后使用 i 的新值

但是在下面的代码中有所不同

var n=5;
for(i=n;i>=1;--i)
{
   console.log(i);//output:5 why?
    for(j=1;j<=n;++j)
    {
       document.write(j);
    }
document.write("\n");
}

即使我们使用预减运算符,为什么 vaule 在第一个循环中输出 5?此外,我们在 innerLoop 完成后使用新行但它没有显示。这背后的原因是什么?是因为每个循环 document.write() 运行 document.open() 函数吗?如果是,在哪个上下文 || 条件将 document.write 运行 document.open() 函数?

4

2 回答 2

9

++jin在循环中的语句执行后出现在循环的末尾,因此andfor(j=1;j<=n;++j)之间的构造没有区别。forfor++jj++

你可以这样想你的循环:

for(j=1;j<=n;)
{
   document.write(j);
   ++j;
}

至于console.log(i);//output:5 why?问题,那是因为5iassign in的初始值i=n

至于document.write('/n');, HTML 忽略换行符。如果您想要一个可见的换行符,请使用一个<p><br>其他一些腾出空间的 HTML 结构。换行符被忽略。

这个 HTML 没有区别:

<span>This is some text</span>

和这个带有换行符的 HTML:

<span>
This is some text
</span>
于 2013-04-18T02:27:17.257 回答
2

此外,我们在完成 innerLoop 后使用新行,但它不显示

因为 HTML 中的新行是<br>,而不是\n空格,所以不会创建新行(根据 HTML 规范)。

于 2013-04-18T02:35:36.367 回答