<script type="text/javascript"> function add2(){ for(var a=1;a<=9;a++){ var num=a+"*"+b+"="+a*b; for(var b=1;b<=a;b++){ document.write(num+" "); } document.write("<br/>"); } } add2();var num这里为什么会出现这样的结果,而放在第二个for里面就对了
3 回答
已采纳

Sexyme
TA贡献3条经验 获得超2个赞
因为ECMAScript会把变量的定义提前,但是不会把赋值提前,而且ECMAScript中没有私有作用域,你的代码等于:
<script type="text/javascript"> function add2(){ var a=undefined, b=undefined, num =undefined; for( a=1;a<=9;a++){ num=a+"*"+b+"="+a*b; //第一次b=undefined for( b=1;b<=a;b++){ document.write(num+" "); }//每次循环后,b=a+1; document.write("<br/>"); } } add2();
所以会这样。

不屈的咸鱼
TA贡献27条经验 获得超21个赞
当a=1的时候,var num=a+"*"+b+"="+a*b;这句话的中的变量b你还没有进行声明,只有当你将这句话放入到第二层循环时,变量b在var b=1时进行了声明,答案才正确
添加回答
举报
0/150
提交
取消