iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 9
0
自我挑戰組

溫故知新 JavaScript系列 第 9

Day9- 淺談 var 與 hoising 觀念

  • 分享至 

  • xImage
  •  

https://ithelp.ithome.com.tw/upload/images/20200922/20129439JZL5LKkY3N.jpg
先別看到標題就覺得又會是什麼艱澀的概念,今天來一點輕鬆的吧!
還記得我們前面有提到過程式碼是從上到下依序讀取的考考大家以下的程式碼是這樣,那麼依序跑出來的 console 結果會是什麼呢?

console.log(a);
var a = 10;
console.log(a);

console 結果
第一個是 undefined
第二個是 10

原因是第一個 console.log(a) 此時還沒有用變數存起來,瀏覽器根本不知道 a 是什麼所以會跑出未定義 undefined 但是第二個 console 因為前面已經有建立變數 a=10 因此就會出現 10 的結果。

那再來問問大家如果是這樣的程式碼呢,第一個 hello()會被執行嗎?

hello();

function hello(){
  console.log('您好')
};

答案是會的!因為 function 有一個觀念就是 hoising ,也就是今天我們寫的 function 無論放在哪個位置上,都會被瀏覽器認為是最重要的因此會優先推到最上方,所以在任何一個地方執行這個函式都能成功的執行!

但是這邊還是建議大家培養良好的撰寫習慣,把要執行的函式 hello() 放在 function 後面會比較好囉!

直接看 DEMO 測試
以上是我粗淺的理解,有誤之處還請各位前輩指正,明天我們就要開始,把前面的觀念做一個大整合囉!


上一篇
Day8- 全域變數與區域變數
下一篇
Day10- 來做一個簡易計算機吧 -上集
系列文
溫故知新 JavaScript30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言