5 回答

TA貢獻22條經(jīng)驗 獲得超29個贊
你試試這個。
var sum;
console.log(sum)
sum == undefined
sum 如果你不給他初始化值,默認給他的是預(yù)處理時候賦的undefined.任何數(shù)字與undefined 進行運算因為無法計算,所以輸出NaN

TA貢獻79條經(jīng)驗 獲得超122個贊
你好。var sum進行了定義但是未初始化,導(dǎo)致sum被編譯器編譯為undefined。而parseint解析了字符串返回了一個十進制數(shù)(由于此處省略了第二個參數(shù)默認為10進制。)問題就出在這里,當一個undefined + 一個十進制數(shù) = ?。編譯器無法進行對應(yīng)的類型轉(zhuǎn)換,將會返回一個NaN(not a number),所以無論你進行多少次加法得到的結(jié)果是NaN。但是typeof(sum)為什么是number類型的呢?因為在js中NaN本身就是一個數(shù)值類型的東西。如果存疑,可以編寫程序直接輸出typeof(NaN)來求證一下。
以上是我的淺見,歡迎交流。

TA貢獻1條經(jīng)驗 獲得超1個贊
sum不賦值的時候typeof(sum)不是number,加上一個number后類型變成number,但是值為Nan,
賦值的時候初始為0,就是正常的算術(shù)運算。
添加回答
舉報