为了账号安全,请及时绑定邮箱和手机立即绑定

定义问题求解

定义问题求解

慕粉1469491289 2016-09-06 11:43:19
<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+"&nbsp;"); } 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+"&nbsp;");
        }//每次循环后,b=a+1;
        document.write("<br/>");
    }
}
add2();

所以会这样。

查看完整回答
1 反对 回复 2016-09-07
?
我吃西瓜很快

TA贡献39条经验 获得超13个赞

变量作用域问题。for循环内的变量仅仅作用于自身循环体内部。

你在第一层for循环内找另一个for循环内的变量当然找不到咯

查看完整回答
反对 回复 2016-09-06
?
不屈的咸鱼

TA贡献27条经验 获得超21个赞

当a=1的时候,var num=a+"*"+b+"="+a*b;这句话的中的变量b你还没有进行声明,只有当你将这句话放入到第二层循环时,变量b在var b=1时进行了声明,答案才正确

查看完整回答
反对 回复 2016-09-06
  • 3 回答
  • 0 关注
  • 1763 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信