關于變量未定義和未賦值的問題
<script?type="text/javascript"> ??var?num1=10-5; ??var?num2=6+num1; ??document.write("小明還剩:"+num1+"元"+"<br>"); ??document.write("小紅花:"+num2+"元買個鉛筆盒"); </script>
這是原代碼,如果將代碼進行下述修改后,為什么會出現這種情況?
a.如果刪除2.3行代碼,代碼全部不會顯示,包括“小明還?!钡萪ocument.weite()里的。
b.如果第2.3行改為
var?num1; var?num2;
的話,即只定義不賦值,輸出的num值是undefined。
c.如果2.3行代碼互換
??var?num2=6+num1; ??var?num1=10-5;
輸出的num2是NaN。
d.我在慕課網站上先成功運行一次后,再進行我的上述操作,右側小窗口輸出的都是第一次的正確代碼。
感謝解答
2017-05-27
a:刪除第二第三行,num1和num2 沒有被定義,整個js不能正確運行,所以不會執行第二行以后的代碼;
b:修改成var?num1;var?num2,變量被定義,但是沒有賦值,系統會給一個默認值,就是undefined
c:2.3行互換,NaN是未知錯誤,系統無法判定num1的類型,至于為啥可以運行,我猜測是因為num1 前面的+號
d:你沒有點擊提交按鈕,所以右側的窗口還是你修改前的效果
2017-12-22
感謝提出這個問題以及回答問題的各位!拓展了自己的思路
2017-12-01
補充c點:2.3行互換,num1雖在后面定義并賦值,但聲明提前(即把定義提到代碼頂部),它的值為undefined。
? ? ? ? ? ? ? ?+號運算,javascript優先期望操作數為數字,因此,javascript會把undefined隱式轉換為NaN,轉
? ? ? ? ? ? ? ?換結果無意義,6+NaN表達返回NaN(中文意思:不是一個數字)。
2017-04-19
只定義了變量,沒有賦值,輸出就是undefined.