亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么聲明sum不賦為0值就變成NaN?賦了就沒事

為什么聲明sum不賦為0值就變成NaN?賦了就沒事

雨溢豐 2016-01-18 23:17:03
var arr=scoreStr.split(";");var sum;//var sum=0就是815?? document.write(arr+"<br/>");? //從數組中將成績撮出來,然后求和取整,并輸出。? for(var i=0;i<arr.length;i++){? sum+=parseInt(arr[i].substr(3,2));? ?}? ?document.write(typeof(sum)+"-"+sum);//為什么是number-NaN?
查看完整描述

5 回答

已采納
?
_da

TA貢獻22條經驗 獲得超29個贊

你試試這個。
var sum;

console.log(sum)

sum == undefined

sum 如果你不給他初始化值,默認給他的是預處理時候賦的undefined.任何數字與undefined 進行運算因為無法計算,所以輸出NaN

查看完整回答
反對 回復 2016-02-15
?
海天之戀

TA貢獻2條經驗 獲得超3個贊

NaN是一種特殊的number ,表示無值;

查看完整回答
2 反對 回復 2016-01-19
?
小小酥1992

TA貢獻6條經驗 獲得超2個贊

var sum;相當于你聲明了一個變量而沒有值,所以它可以是任意東西,因此你把它和數字相加就會出現那種情況!

查看完整回答
1 反對 回復 2016-02-15
?
MadMarical

TA貢獻79條經驗 獲得超122個贊

你好。var sum進行了定義但是未初始化,導致sum被編譯器編譯為undefined。而parseint解析了字符串返回了一個十進制數(由于此處省略了第二個參數默認為10進制。)問題就出在這里,當一個undefined + 一個十進制數 = ?。編譯器無法進行對應的類型轉換,將會返回一個NaN(not a number),所以無論你進行多少次加法得到的結果是NaN。但是typeof(sum)為什么是number類型的呢?因為在js中NaN本身就是一個數值類型的東西。如果存疑,可以編寫程序直接輸出typeof(NaN)來求證一下。

以上是我的淺見,歡迎交流。

查看完整回答
1 反對 回復 2016-01-19
?
zsk13

TA貢獻1條經驗 獲得超1個贊

sum不賦值的時候typeof(sum)不是number,加上一個number后類型變成number,但是值為Nan,

賦值的時候初始為0,就是正常的算術運算。

查看完整回答
1 反對 回復 2016-01-19
  • 5 回答
  • 0 關注
  • 2607 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號