关于JavaScript for循环星号图案代码的执行逻辑疑问
关于这段星号图案JS代码的疑问解答
你的代码如下:
let star3 = "1"; for (let i = 1; i <= 4; i++) { for (let k = 3; k >= i; k--) { star3 = star3 + "2"; } for (let j = 1; j <= i; j++) { star3 = star3 + "* "; } star3 = star3 + "\n"; } console.log(star3);
你认为变量star3会持续累积内容的判断是对的,但误解了输出时每行的构成——\n是换行符,它会把字符串分割成不同行显示,所以你看到的每一行是star3里被换行符分隔的片段:
- 第一次循环(i=1)结束后,
star3变为:"1222* \n",对应输出的第一行1222*。 - 第二次循环(i=2):
- 先执行k的循环,给
star3追加两个"2",此时star3是"1222* \n22"; - 再执行j的循环,追加两个"* ",变成
"1222* \n22** "; - 最后追加换行符,
star3变为"1222* \n22** \n"。
- 先执行k的循环,给
当console.log输出时,换行符会让后面的22** 单独成为第二行,所以你看到的第二行就是这个片段,而非接着第一行末尾继续累积。
内容的提问来源于stack exchange,提问作者bluegiraffe
相关产品推荐
相关产品推荐

