整理這些技術筆記真的很花時間,如果你願意 關閉 Adblock 支持我,我會把這份感謝轉換成更多「踩坑轉避坑」的內容給你!ヽ(・∀・)ノ
JavaScript 核心觀念(23)-物件-額外補充:變數及物件屬性的差異
前言
接下來說明一下變數與物件屬性的差異性。
差異
首先我們知道當我們宣告一個變數時,會在 window 下新增一個屬性
1 | |
但是這邊有一件很特別的事情就是,如果你直接打 b = 2,你會發現 window 一樣可以找到 b 的存在
1 | |
你會發現我們 b 並沒有透過宣告的方式建立,但卻會出現在 window 下,而這兩種建立的方式最大差別在於「變數是無法被刪除的」。
舉例來講,我們可以使用 delete 這個方法嘗試刪除物件的屬性
1 | |
你會發現使用 var 宣告的變數是無法被刪除的,因此若是 b 呢?
1 | |
你可以發現 b 被刪除了,因此會建議變數一定要使用 var 宣告,否則是有很高的機會發生悲劇的,因此在 MDN 文件中也有提到
因此, 建議你一定要宣告你的變數, 不管你要將它使用於全域範圍內或者函數內。
若未宣告變數, 將非常可能導致無法預測的結果。所以, 在 ECMAScript 5 strict mode 中, 若在函數中給一個未經宣告的函數賦值, 將會丟出錯誤。
所以不要鐵齒唷。
參考文獻
整理這些技術筆記真的很花時間,如果你願意 關閉 Adblock 支持我,我會把這份感謝轉換成更多「踩坑轉避坑」的內容給你!ヽ(・∀・)ノ