变量声明问题 代码黑洞吗?

<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
这是为什么啊?

麻烦各位老师看看!


开心的山羊
浏览 1912回答 7
7回答

super_mb

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丶林

调换位置之后,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

柠檬酸钠

因为你只声明一个变量不给他赋值的话默认为undefined,undefined和任何东西运算都为undefined,所以正常现象

地狱快车_666

var sum,mymoney =0;多变量声明你理解错了,这里编译器理解的是 :var sum 声明一个变量sum,你没有给他赋值那么默认就是undefined 。var mymoney = 0; 声明一个变量mymoney为0。在后面做运算的时候任何数字加undefined都是NaN,not a number。

Tofly_ZZL

变量赋值问题,多变量赋值不是这样的。

nickylau82

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由于其解析原理,最好把左边花括号放在上面一行。

EricPan

语法错误,javascript多变量声明是这样的var name="Gates", age=56, job="CEO";
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript