變數與常數
我們先用 ES6 的 let 宣告
1 | let test = 22; |
在這邊我們看到了它建立的變數 test ,並指派了一個初始值,接著改動初始值,如果我們沒有派給他值就會出現 undefined
也可以跟其他語言一樣進行多個指派
1 | let user, user1 = 1, 2; |
那我們該用哪個?
常數的優點在於不會在無意間改動不該改動的值
這邊就有一個問題存在……
1 | let str = "hello"; |
如果說……
在一開始的時候,str 初始化使用了不可變的值,然後又被取代掉了…..
這邊的重點在於這兩個是不同的字串,只不過 str 保存的值被改變而已……
將數字當成字串
1 | const a = 3 + '30'; |
強制轉型,當兩方的數值為不同型態時,JavaScript 會直接把兩方都轉為相同的型別。
關於 var 的問題
在 ES6 加入了 let ,但是在這之前都是使用 var 的,所以應該也要了解一下 var 。
當我們使用 let 關告變數時,它不會在被宣告的地方之前出現。如果我們使用了 var ,那它可以在 目前範圍內的任何地方
使用。
1 | let x1; |
如果使用 let ,在宣告變數前使用也會發生錯誤
1 | x; |
但是如果使用 var
……
1 | x; |
這裡發生了啥事?從上面看下來應該不合理吧……。
使用 var 宣告變數,是採用一種 懸掛 ( hoisting )
的機制。JS 會掃描整個範圍,任何使用 var 的都會被懸掛,賦予值
不會,所以 JS 會將上面的範例解讀為…..
1 | var x; // 宣告 ( 但沒有賦值 ) 被懸掛 |
咳咳……這樣應該沒問題了,因為 ES6 在短時間內還無法完全普及,所有的程式都必須轉成 ES5 。
所以在那之前也是要懂 var 的啦……
布林值
這邊只有2種型態
1 | let a = false; |
符號
使用 Symbol()
1 | const red = Symbol(); |
符號就跟物件一樣,需是獨一無二。
null and undefined
一般來說我們使用 null ,unfined
留給電腦使用,讓電腦告訴我們哪個東西尚未賦值。
物件
物件是一個容器,而物件會隨著時間改變。
1 | const test = {} |
物件的內容稱為 特性 ( property ) 或 成員 ( member ),特性是由名稱 ( 鍵 ) 與值組成的
特性的名稱必須使用字串或符號,值可以是任何型態
1 | // const test = {} |
不同的物件就用不同的 name 去代。
使用 delete 可以刪除部分區域,比如……
1 | const test = { |
日期
使用內建的 Date() 物件
1 | const now = new Date(); |
我們也可以設定固定時間
1 | const now = new Date(2022, 1, 25, 21, 53); |
陣列
我們先建立一個最基礎的陣列
1 | var myNewarray = [0, 1, 2, 3]; |
正常來說,我們會將陣列裡的東西稱為 元素( element )
我們可以使用 arrayName.length
取得長度
1 | let myarray = [0, 1, 2, 3, 4, 5, 6]; |