型態
- 字串
string
- 數字
number
- 物件
object
- 陣列
array
is aobject
- 布林
boolean
宣告
常見變數命名規則
使用 小駝峰式 來命名變數。
字串
var str1 = "Hello";
var str2 = 'World';
字串串接
str1 + str2 // HelloWorld
str1 + ' ' + str2 // Hello World
數字
var num = 1;
四則運算
1 + 1 // 2
1 - 1 // 0
2 * 2 // 4
2 / 2 // 1
10 % 7 // 3 餘數
數字與文字相加?
"1" + 1 // "11"
"a" + 1 // NaN
parseInt("1") + 1 // 2
+"1" + 1 // 2
陣列
var arr = [1, 2, 3, 4, 5];
arr[0] // 1
陣列索引 (index
) 從 0 開始
物件
var member = {
name: 'Iiinto',
age: 18,
"not good": true
};
使用
使用 .
來取得屬性
member.name
取得有空白的屬性
member['not good']
不建議使用有空白的屬性
生命週期 Scope
宣告變數等同於將資料放入記憶體位置,所以當資料被拿出記憶體後,等同於不存在。
var x = 1;
function processX() {
var x = 2;
console.log("x in processX: " + x); // Q1
}
function globalX() {
x = 3;
console.log("x in globalX: " + x); // Q3
}
processX();
console.log(x); // Q2
globalX();
console.log(x); // Q4
function makeY() {
var y = 99;
console.log(y in makeY: " + y); // Q5
}
makeY();
console.log(y); // Q6
執行流程
- 宣告變數 x 為 1
- 將 x = 1 放入記憶體位置 0x01
- 宣告 function processX
- 不執行,將 processX 放入記憶體位置 0x02
- 宣告 function globalX
- 不執行,將 globalX 放入記憶體位置 0x03
- 呼叫 processX
- processX 內的 var x = 2 放入記憶體位置 0x04
- 取得 0x04 的 x,得到 2 (Q1)
- 結束 processX,釋放因 processX 產生佔用的記憶體位置 0x04
- 取得 0x01 的 x,得到 1 (Q1)
- 呼叫 globalX
- globalX 內的 x = 3 為全域變數,寫入 0x01 的 x = 3
- 取得 0x01 的 x ,得到 3 (Q3)
- 結束 globalX
- 取得 0x01 的 x ,得到 3 (Q4)
- 宣告 function makeY
- 不執行,將 makeY 放入記憶體位置 0x04
- 呼叫 makeY
- makeY 內的 var y = 99 放入記憶體位置 0x05
- 取得 0x05 的 y ,得到 99 (Q5)
- 結束 makeY,釋放因 makeY 產生佔用的記憶體位置 0x05
- 無法取得 y 位置,得到 defined (Q6)