當你開始寫 JavaScript,你一定會碰到數字、文字這些東西。
比如 42、"Hello"、true,這些在 JavaScript 裡都叫做資料值(Value)。
但這些值到底是什麼?它們在電腦裡長什麼樣子?
這篇文章會從最底層開始,帶你搞懂資料值的本質,以及 JavaScript 是怎麼幫你管理這些值的。
位元是什麼?電腦儲存資料的最小單位
在電腦的世界裡,所有資料最終都會變成一種最小的單位——位元(bit)。
一個位元只能表示兩種狀態:0 或 1,就像一個開關,不是開就是關。
單獨一個位元能表達的東西很有限,但把大量的位元組合在一起,就能表示數字、文字、圖片、影片……幾乎任何東西。
那電腦裡到底有多少位元呢?
光是你電腦的工作記憶體(俗稱 RAM),裡面就有超過 300 億個位元。
而硬碟或 SSD 的容量,通常還會比記憶體再高出數十倍。
面對這麼龐大的位元數量,我們不可能一個一個去操作它們。
所以,我們需要一種方式來整理這些位元。
做法就是:把好幾個位元「分成一組」,讓每一組代表一段有意義的資訊。
舉個例子,單獨看 0 1 0 0 0 0 0 1 這八個位元,你什麼感覺都沒有。
但如果我們規定「這八個位元是一組,代表一個字母」,那它就代表英文字母 A。
同樣的道理,另外一組位元可以代表數字 42,再另外一組可以代表 true。
靠著這種「把位元分組、賦予意義」的方式,電腦就能處理各式各樣的資料了。
什麼是資料值?認識 JavaScript 的資料型態
在 JavaScript 中,這些被分好組的位元區塊,就叫做資料值(Value)。
你可以把它想像成這樣:位元是原料,資料值是用原料做好的成品。
每一個資料值都是由位元組成的,但光看位元本身,你分不出來它是數字還是文字。
那 JavaScript 怎麼知道 01000001 是字母 A,而不是數字 65?
答案就是資料型態(Type)。
資料型態就像是一個標籤,告訴 JavaScript:「這組位元要當成什麼來用」。
貼上「數字」標籤,JavaScript 就把它當數字處理,可以做加減乘除:
42 + 8 // 得到 50貼上「文字」標籤,JavaScript 就把它當文字處理,可以把兩段文字串在一起:
"Hello" + " World" // 得到 "Hello World"同樣是一堆位元,標籤不同,JavaScript 對它的處理方式就完全不同。
除了數字和文字,JavaScript 還有其他資料型態,像是布林值(true / false)、函式等等,後面的文章會再一一介紹。
在 JavaScript 中怎麼建立資料值?
在 JavaScript 裡,建立一個資料值非常簡單——你只要直接把它寫出來就好。
42
"Hello"
true像上面這樣,當你在程式碼裡寫下 42,JavaScript 在執行的時候就會去記憶體裡找一塊空間,把 42 這個數字值放進去。
同樣的,寫下 "Hello",JavaScript 就會在記憶體裡建立一個文字值 "Hello"。
寫下 true,就建立一個布林值 true。
這就是所謂的「建立資料值」——你在程式碼裡寫下一個值,JavaScript 執行到那一行的時候,就會自動幫你在記憶體裡把它生出來。
不需要什麼特別的步驟,寫下來,它就存在了。
資料值存在哪裡?記憶體與垃圾回收
雖然建立資料值看起來好像是「憑空創造」的,但其實每個值都必須佔用電腦記憶體裡的一個位置。
這就帶來一個問題:記憶體的空間是有限的。
每建立一個資料值,就會佔掉一點記憶體空間。
如果你的程式建立了非常大量的資料值,記憶體就有可能被塞滿。
不過在實際寫程式的時候,這種情況很少發生。
舉個例子,假設你的程式需要計算一張購物清單的總金額:
蘋果價格 = 30
牛奶價格 = 65
麵包價格 = 45
總金額 = 蘋果價格 + 牛奶價格 + 麵包價格 // 140算完之後,程式只需要保留「總金額 140」這個值。
那些個別的價格值(30、65、45)就用不到了。
這些「用不到的值」不會一直佔著記憶體,JavaScript 會自動把它們清掉,把空間讓出來給之後需要的值使用。
而且 JavaScript 有一個內建的機制叫做垃圾回收(Garbage Collection)。
它的運作方式是這樣的:當你不再使用某個資料值的時候,JavaScript 會自動把它標記為「不需要了」,然後釋放它所佔用的記憶體空間。
這些被釋放出來的空間,就可以用來儲存新的資料值。
你可以把它想像成一個自動回收系統:舊的值用完就回收,騰出空間給新的值使用。
小結
讓我們整理一下這篇文章的重點:
- 電腦裡的所有資料都是由位元組成的,記憶體裡有數百億個位元。
- JavaScript 把這些位元分組包裝,形成一個一個的資料值(Value)。
- 每個資料值都有自己的資料型態(Type),像是數字、文字、函式等等,型態決定了它能做什麼。
- 在 JavaScript 中,只要寫出一個值,它就會被建立,非常簡單。
- 每個值都會佔用記憶體空間,但 JavaScript 的垃圾回收機制會自動釋放不再使用的值,避免記憶體被用光。
下一篇,我們會開始介紹 JavaScript 中最基本的資料型態,以及用來處理資料值的運算子。