# 第一關:JS 環境與變數環境
# 第一題
// 1.產生 console.log 從上到下的值為?
// 2.出現幾個變數、型別、記憶體物件?
var a;
a = 1;
a = "hello";
console.log(a);
1
2
3
4
5
6
2
3
4
5
6
參考解答:
- console.log(a) 印出來的值會是 hello
- 1個變數、2個型別、3個記憶體物件
說明:
- 執行時從上到下為 undefined -> 1 -> "hello",最後印出來的是 hello
- 1 個變數為 a
2 個型別分別為 number(字元、數字)、string(字串)
3 個記憶體物件為:
undefined// 宣告變數 var a;
1// a 賦予值為 1
"hello";// a 賦予值為 "hello"
# 第二題
// 1.產生 console.log 從上到下的值為?
// 2.出現幾個變數、型別、記憶體物件?
var b = 3 ;
var c = 4;
console.log(d);
var d = b + c;
console.log(d);
1
2
3
4
5
6
7
2
3
4
5
6
7
參考解答:
- 第 1 個 console.log(d) 印出來的值會是 undefined
第 2 個 console.log(d) 印出來的值會是 7 - 3 個變數、1 個型別、6 個記憶體物件
說明:
- 執行時從上到下,因為印出第一個 console.log 時,還沒有宣告到 d 變數,所以第一個 console.log 印出來會是 undefined
接著往下跑因為有宣告 d 變數且 b 與 c 相加,故 console.log 印出來值為 7 - 3 個變數分別為 b、c、d
1 個型別分別為 number(字元、數字)
6 個記憶體物件為:
undefined// 在瀏覽器編譯時,宣告變數都會往上搬不會賦予值,會變成只宣告變數 var b;
undefined// 同上,會變成 var c;
undefined// 同上,會變成 var d;
3// b 賦予值為 3
4// c 賦予值為 4
7// d 賦予值為 7
# 第三題
// 1.產生 console.log 從上到下的值為?
// 2.出現幾個變數、型別、記憶體物件?
console.log(e);
var e;
e = 5;
e = "hello";
e = true;
console.log(e);
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
參考解答:
- 第 1 個 console.log(e) 印出來的值會是 undefined
第 2 個 console.log(e) 印出來的值會是 true - 1 個變數、3 個型別、4 個記憶體物件
說明:
- 執行時從上到下,因為印出第一個 console.log 時,還沒有宣告到 e 變數,所以第一個 console.log 印出來會是 undefined
接著往下跑因為有宣告 e 變數且賦予值從上到下為 5 -> "hello" -> true,故 console.log 印出來值為 true - 1 個變數為 e
3 個型別分別為 number(字元、數字)、string(字串)、boolean(布林)
4 個記憶體物件為:
undefined// 宣告變數 var e;
5// e 賦予值為 5
"hello"// e 賦予值為 "hello"
true// e 賦予值為 true