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

為了賬號安全,請及時綁定郵箱和手機立即綁定

關于變量未定義和未賦值的問題

<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.我在慕課網站上先成功運行一次后,再進行我的上述操作,右側小窗口輸出的都是第一次的正確代碼。

感謝解答

正在回答

4 回答

a:刪除第二第三行,num1和num2 沒有被定義,整個js不能正確運行,所以不會執行第二行以后的代碼;

b:修改成var?num1;var?num2,變量被定義,但是沒有賦值,系統會給一個默認值,就是undefined

c:2.3行互換,NaN是未知錯誤,系統無法判定num1的類型,至于為啥可以運行,我猜測是因為num1 前面的+號

d:你沒有點擊提交按鈕,所以右側的窗口還是你修改前的效果


2 回復 有任何疑惑可以回復我~
#1

Jeoop 提問者

非常感謝!
2017-05-31 回復 有任何疑惑可以回復我~

感謝提出這個問題以及回答問題的各位!拓展了自己的思路

0 回復 有任何疑惑可以回復我~

補充c點:2.3行互換,num1雖在后面定義并賦值,但聲明提前(即把定義提到代碼頂部),它的值為undefined。

? ? ? ? ? ? ? ?+號運算,javascript優先期望操作數為數字,因此,javascript會把undefined隱式轉換為NaN,轉

? ? ? ? ? ? ? ?換結果無意義,6+NaN表達返回NaN(中文意思:不是一個數字)。

2 回復 有任何疑惑可以回復我~

只定義了變量,沒有賦值,輸出就是undefined.

0 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消
JavaScript進階篇
  • 參與學習       468969    人
  • 解答問題       22582    個

本課程從如何插入JS代碼開始,帶您進入網頁動態交互世界

進入課程

關于變量未定義和未賦值的問題

我要回答 關注問題
微信客服

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

幫助反饋 APP下載

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

公眾號

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