<script type="text/JavaScript">
var sum,mymoney =0;
for(sum=1;sum<= 10;sum++)
{
mymoney= mymoney + sum;
}
document.write("sum合计:"+mymoney);
</script>
问题:当上面var 后面的 sum 与 mymoney 调换位置 代码就为NaN
这是为什么啊?
麻烦各位老师看看!
7 回答
已采纳
super_mb
TA贡献101条经验 获得超107个赞
NaN意为Not a Number。
我觉得你是不是认为:var sum,mymoney =0;这句是给sum和mymoney都赋值为0了,其实只是赋给了mymoney,sum的值为undefined。
如果调换位置,那么就是这样:
<script type="text/JavaScript"> var mymoney,sum =0; //代码中的mymoney只是声明而未初始化,其值为undefined,而sum=0 for(sum=1;sum<= 10;sum++) { mymoney= mymoney + sum; //这里,mymoney未初始化,用undefined + sum,可想而知momoney的值为NaN } document.write("sum合计:"+mymoney); </script>
Suber丶林
TA贡献75条经验 获得超180个赞
调换位置之后,mymoney就是undefined了,如下:
var sum, mymoney = 0; // 等价于 var sum = undefined; var mymoney = 0; // 那么你把mymoney与sum的声明调换过来就是 var mymoney, sum = 0; // 等价于 var mymoney = undefined; var sum = 0; // 所以在第一次循环里面 mymoney = mymoney + sum; // 这里已经成NaN了。 mymoney = nudefined + 1; // => NaN
地狱快车_666
TA贡献4条经验 获得超0个赞
var sum,mymoney =0;
多变量声明你理解错了,这里编译器理解的是 :
var sum 声明一个变量sum,你没有给他赋值那么默认就是undefined 。
var mymoney = 0; 声明一个变量mymoney为0。
在后面做运算的时候任何数字加undefined都是NaN,not a number。
nickylau82
TA贡献128条经验 获得超67个赞
NaN是not a number的意思。
主要因为单var模式的时候,赋值应该是每个变量都去赋值,因为只是单var,并不是单赋值。
var sum=0,mymoney=0;
不过题主习惯很好,把所有的变量在最上面采用单var声明的方式赋值。
不过最好是如下写法:
var sum = 0, mymoney = 0; for(sum = 1; sum <= 10; sum++) { //逻辑代码 }
因为sum只是个计数器,而mymoney是业务逻辑代码,他们最好换行分开写,另外就是JavaScript由于其解析原理,最好把左边花括号放在上面一行。
添加回答
举报
0/150
提交
取消