定义问题求解

<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();

http://img.mukewang.com/57ce3af000011e3405900172.jpg

var num这里为什么会出现这样的结果,而放在第二个for里面就对了

慕粉1469491289
浏览 1788回答 3
3回答

Sexyme

因为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();所以会这样。

我吃西瓜很快

变量作用域问题。for循环内的变量仅仅作用于自身循环体内部。 你在第一层for循环内找另一个for循环内的变量当然找不到咯

不屈的咸鱼

当a=1的时候,var num=a+"*"+b+"="+a*b;这句话的中的变量b你还没有进行声明,只有当你将这句话放入到第二层循环时,变量b在var b=1时进行了声明,答案才正确
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript