老師請教一下: 我把程式碼列出如下, 想問一下Question 1) line 11: alert(Msg); 是不是會出現 「 Hello, This is outside of Func1() . 」 , 而不是 「Hello, This is indisde of Func1().」, 因為line 11適用 "外部程式碼不能使用內部變數"這個規則."。 line 06: line 07: var Msg; line 08: Msg="Hello, This is outside of Func1()."; line 09 : alert(Msg); line10: Func1(); line11: alert(Msg); line12: line13: function Func1() line14: { line15: msg="Hello, This is inside of Func1()."; line16. alert (Msg); line17. } line18 Question 2) { }(大括符) 内沒有宣告 var Msg; (宣告一個同名的變數Msg)不會影響line 16: alert (Msg); 的結果, 因為line 16會先在內部找到Msg="Hello, This is inside of Func1()"。即時如果line14: 加上 var Msg; (宣告一個同名的變數Msg)也不會影響line 16: alert (Msg); 的結果.
@cwpeng-course8 жыл бұрын
我先假設你 line 15 其實是要寫 Msg="Hello, This is inside of Func1().";。不然我會看不懂問題 XD 1. 外部程式碼確實不能使用內部宣告的變數。他會直接印出全域變數 Msg 的內容沒錯。 2. 如果你沒有在函式內部宣告 var Msg;,那你的 line 16 會印出全域變數 Msg 的內容。有宣告的話,就會印出區域變數 Msg 的內容。不過以你的程式來看,無論哪一種都會有一樣的結果,因為你在印之前都先把 "Hello, This is inside of Func1()" 放進 Msg 變數裡了。