我們可以透過 var
宣告一個變數 a
(但閱讀時,要從等號的右邊開始 ⇒ 字串 Hi 賦予給變數 a)
var a = 'Hi'
宣告變數 變數名稱 字串型別 Hi (?
變數名稱的限制:開頭不能是數字、不能有-和.等等,不能是 JS 關鍵字、通常會用「名詞」開頭
沒有給值的變數預設為 undefined
var b; //undefined
變數也分為全域變數和區域變數
在「全域範圍」內宣告的變數,稱為「全域變數」
不在 function (函式)內宣告的變數,都屬於「全域範圍」
var a = 'Hi' // a 是全域變數
在 function (函式)內宣告的變數,稱為「區域變數」
function test(){
var a = 'Hi' // a 是區域變數
}
顧名思義「區域變數」運作的範圍就在這個函式的區域內
此時在 window(全域)下無法取到 a
a // a is not defined
ES6 後,宣告變數可以使用 const
或是 let
透過上方的說明可以得到一個結論:只要不是使用 var
let
const
其中之一宣告的都不是變數
那會是什麼呢?我們透過一個例子來理解
a = 'Hi'
可以在 window 物件下找到 a
他變成了 window 物件下的屬性
window.a
//"Hi"
屬性的特性跟變數很像,像到有時候很難分辨是變數還是屬性,我們可以透過幾種方式來判斷
a = 'Hi'
delete window.a
window.a
//undefined
此時因為 a 被刪除了,所以找不到 a
var a = 'Hi'
delete a
console.log(a) //'Hi'
小練習:變數與屬性
var a = 1; // a 是變數
window.a = 2;
delete window.a;
console.log(a); //2
b = 1; // b 是屬性
window.b = 3;
delete window.b;
console.log(b); //b is not defined