JS九九乘法表-千奇百怪的错,五彩斑斓的改

一位中年学习者在自学JavaScript时,尝试用for循环编写乘法表,经历了多次错误和调试。他首先遇到的问题是无法避免换行,后来通过创建字符串累积乘法表达式,但因字符串拼接导致结果错误。经过不断尝试和理解,他发现应在内层循环中初始化字符串,并在每行结束后添加换行符。最终成功实现了乘法表的打印功能。
摘要由CSDN通过智能技术生成

中年男人自学js的跬步之行,错的我自己都乐了...

自己练习for循环打乘法表,一路披荆斩棘,错误无数,状况百出,在此记录,以示后人。

 for(heng = 1;heng <= 9;heng++){
        for(shu = 1;shu <= heng;shu++){
            console.log(shu+' * '+heng+' = '+shu*heng)
        }
    }

运行后发现结果是这样

然后想找一个不换行的命令,没找到...

参考网上的方法,加了一个str变量,想把这个乘法表加到一个字符串里打印,完整代码如下:

    let str = '';
    for(heng = 1;heng <= 9;heng++){
        for(shu = 1;shu <= heng;shu++){
            str += shu+' * '+heng+' = '+shu*heng;
        }
    }
    console.log(str);

运行后是这样,没有换行...

 于是在第6行加了换行(原来在第5行大括号后面加的,发下command+/注释掉的时候连着括号一起注释掉了,所以要单独一行),代码如下:

    let str = '';
    for(heng = 1;heng <= 9;heng++){
        for(shu = 1;shu <= heng;shu++){
            str += shu+' * '+heng+' = '+shu*heng;
        }
        console.log('\n');
    }
    console.log(str);

运行后结果是这样,还是没有换行,只是运行了9遍...

用谷歌浏览器断点调试测试分析得知:

26行之前正确输出了1*1=1,但是没有console.log(str),都存在缓存里,到了27打印了个换行,就有返回23继续循环了,如此反复了9次,打印了9个27行(换行),才最终打印了29行,所以出现了截图效果。

想着:把29提到27前面,先打印,再回车,是不是就可以了?

    let str = '';
    for(heng = 1;heng <= 9;heng++){
        for(shu = 1;shu <= heng;shu++){
            str += shu+' * '+heng+' = '+shu*heng;
        }
        console.log(str);
        console.log('\n');
    }

结果如下,只对了2行,从第3行就开始抽风:

继续断点调试:

 分析如下,第一次打印后,进入第二次循环时,str已经包含了1*1=1,因为用了+=,所以每次打印都带着上一次的结果。那把+=改成=试试呢?

代码如下:

    let str = '';
    for(heng = 1;heng <= 9;heng++){
        for(shu = 1;shu <= heng;shu++){
            str = shu+' * '+heng+' = '+shu*heng;
        }
        console.log(str);
        console.log('\n');
    }

 醉了...结果如下:

继续断点调试...

因为没有+=,只有=,所以每次都是第二个for里shu++之后大于heng(73行for范围和变化那里)了,才跳出循环,所以只打印跳出循环前最后生成的字符串...

没想法了,看了眼别人写好的,原来新建的空字符串是在第一层循环和第二层循环之间定义的,太难了...我感觉这不看答案根本想不到啊,大家都很容易的写出来了么,这个会写多了慢慢就好了么,还是就真的笨啊...

最终代码如下:

    for(heng = 1;heng <= 9;heng++){
        let str = '';
        for(shu = 1;shu <= heng;shu++){
            str += shu+' * '+heng+' = '+shu*heng+'   ';
        }
            console.log(str);
            console.log('\n');
    }

终于成功了:

.....然后无意间又看到有heng&shu相等时加换行的写法,理解思路了,有时间也试试,看看能怎么千奇百怪的错,怎么五彩斑斓的改的.......脑子是个好东西,可惜咱没有啊!! 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值