開心的山羊
2016-07-11 13:06:52
<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
提交
取消