JavaScript學習筆記1-什麼是變數?變數的命名與型別重點
JavaScript簡介
我們在前面的文章中有提到HTML用於建立網站的骨架,CSS則是網站的裝潢,今天要說的這個JavaScript則是用於在網站中添加互動性的元素。
舉例來說,迪士尼樂園裡面有一個料理鼠王的設施,有點類似旋轉咖啡杯,但是它會帶你深入料理鼠王的場景,當你搭乘旋轉咖啡杯抵達指定空間時,眼前的大銀幕就會開始演出小米在廚房中四處逃竄躲避廚師的畫面,而當你移動到另外一個房間,天花板上的灑水設備則會自動啟動朝你噴水,模擬小米被水噴到的體驗。
JavaScript的作用就像這個場景,在網站中的某個指定部分觸發互動效果,讓網站不僅是靜態的展示,而是有更多動態與互動的功能。
什麼是變數
「變數」在生活中常被用在那些可能會產生變化、或是難以預測的事情上面,如果我今天說「這個活動可能會有變數」,意思是活動可能會暫停、取消或是改期等等,因為有可能不同於原本的計畫,我們就會稱為變數,與那些不會改變的事物做一個對比。
舉例來說舉辦一個活動可能會遇到不同的天候狀況,不同的天候狀況則會使決策團隊決定出不同的結果:晴天的時候我們在草地上進行,雨天的時候則在室內進行,颱風天就取消活動,因此我們就可以將天候狀況制定為一個變數,根據變數改變,我們去制定出一個規則並導出結果,而這個規則就是函式。
在JavaScript中,可以想像變數就是一個被貼有標籤的資料夾,必須要先去為這個資料夾命名,接著才去放裡面的資料。以天候狀況來說,我們先拿出一個資料夾,命名為天氣,接著在裡面放入寫有當天的天氣的小卡,也就是值(Value),好讓函式根據這個值去判斷活動該如何進行。
接下來我們就示範一下如何制定變數,而函數我們留到下一次再來討論。
如何宣告變數
在JavaScript當中主要有三個方式可以宣告變數(為變數資料夾命名):
let : 宣告變數之後可以去修改變數的值,類似一個可以隨時替換內容的資料夾,比方說天氣可能一開始是晴天,後來變成雨天了。
1
2let weather = 'sun';
weather = 'rain';const :宣告變數之後就不能夠修改,類似一個上鎖的資料夾,所以通常會放一些比較不會更動的資料,比方說太陽只有一個,或者是披薩的價錢。
1
2const sun = 1;
const pizzaPrice = 120;var : 宣告變數之後可以修改,也可以重新命名變數,擁有非常大的彈性,但是越來越少瀏覽器支援了。
1
2var num = 1;
var num = 2;
變數的命名原則
在命名變數時,有一些需要遵守的規則,我在這邊列出來:
- 不可以使用數字作為開頭。
- 不可以使用系統保留字,比方說let、const、var。
- 大小寫視為不同的變數
- 底線與美元符號可以作為開頭或放置於文字中間
- 文字中間不可以使用空白或是特殊字元
小駝峰命名法
另外在命名時我們也會為了將語意表達清楚而使用小駝峰命名法,也就是第一個單字以英文小寫開頭,第二個單字起以大寫開頭的命名方式:
- Ex. steakPrice
就可以很清楚的知道這是牛排的價格
與之相對應則是大駝峰命名法,也就是第一個單字也以大寫開頭,但暫時還不會用到:
- Ex. SteakPrice
變數的型別
型別也就是資料的類型,舉例來說,我們存放在電腦資料夾裡的東西可能有圖片檔、文件檔、壓縮檔等不同類別的檔案,變數也有幾種不同的類型,主要分成兩大類,八小類:
第一大類:原始型別
- Number:顧名思義就是數字,包含了小數、負數
- String:字串,也就是文字,以
'單引號'
或"雙引號"
將文字內容包裹起來 - Boolean:不是哥布林的布林,而是是非題,也就是true或false
- Undefined:當我們定義了一個變數,卻沒有給變數一個值的時候,就會顯示undefined,表示未被賦值
- Null:有被賦值,但是被賦予的是空值,就會顯示Null
以下是一個示範,我們可以先進行變數的命名之後,利用console.log()
來印出該變數的值,也可以使用typeof來查詢變數的型別
大家可以把這段程式碼貼到codepen的javascript區塊,並打開console檢查我的註解與印出來的內容是否相同
值得注意的是null的型別按理來說應該是null,但是因為官方的錯誤,目前還是顯示為object
1 | let a = 1; //value為1 型別是Number |
第二大類:物件型別
物件型別包含了陣列與物件,這兩者以typeof查詢型別時都會顯示為object物件型別
- Array:陣列,以中括號紀錄多筆資料如下
1
2let arr = [0,1,2];
console.log(typeof arr); - Object:物件,以大括號紀錄多筆帶有屬性的資料如下
1
2
3
4
5
6
7let obj = {
name : 'Shao',
age : 27,
cats : 2
};
console.log(typeof obj);
型別的轉型
型別的轉型又有分為顯性轉型與隱性轉型,顯性轉型是指我們透過指令讓變數型別進行轉型,隱性轉型則是按照自動轉型的規則自動進行轉型,因此要特別注意隱性轉型的原則,否則容易造成與設想不同的結果。
顯性轉型
這邊示範兩個語法,一個是將數字轉為字串,另一個則是將字串轉為數字,不過其實方法還有很多,依據不同的需求使用不同的方式,這邊就只是簡單列出我所學到的方法而已。
Number 轉為 String 的方法
使用toString()
進行轉型
1 | let b = 1; //宣告一個value為1的number型別變數 |
String 轉為 Number 的方法
使用parseInt())
進行轉型
1 | let c = "2"; //宣告一個value為"2"的string型別變數 |
隱性轉型的原則
在某些情況下JavaScript會自動將我們的變數進行轉型,來看看我目前碰到的一些狀況
1 | let stringAddNumber = '1'+1; //String加上Number時,Number會自動被轉為String,因此這題是'11'而不是2,如果想要得出2,就需要先對number做轉型 |
那麼今天的筆記就先到這邊,謝謝你的閱讀~