JS學習筆記#2 | 資料型態 data type

更新於 發佈於 閱讀時間約 9 分鐘


原生值 (Primitive Values)

原生值是 JavaScript 中基本的資料類型,它們不具有物件的特性,且是不可變的。

String (字串)

代表文字資料,可以用單引號或雙引號包裹。

let name = 'Alice'; 
let message = "Hello, " + name;
console.log(message); // 輸出:Hello, Alice

let x = 10;
let y = "10";
console.log(x + y); // 輸出:1010

Boolean (布林值)

  • 代表真 (`true`) 或假 (`false`) 的值,常用於邏輯運算。
  • 可以透過 ! 來「反轉truefalse 的狀態。
const isActive = true;
console.log(isActive); // 輸出: true
console.log(!isActive); // 輸出: false

Number(數值)

  • 可以是整數或浮點數。
  • 精確度是介於 2-53 − 1 與 253 − 1 之間。
let num1 = 10; // 整數 
let num2 = 3.14; // 浮點數
let result = num1 + num2;
console.log(result); // 輸出:13.14

*** 要注意浮點數的精度問題,例如 0.1 + 0.2 可能不會等於 0.3

const result = 0.1 + 0.2;
console.log(result); // 輸出 0.30000000000000004,因為浮點數精度問題

// 解決方案
const result1 = (0.1 * 10 + 0.2 * 10) / 10; // 先將小數轉為整數運算
console.log(result1); // 輸出 0.3

const result2 = (0.1 + 0.2).toFixed(1); // 限制為 1 位小數
console.log(result2); // 輸出 "0.3"(注意是字串)

BigInt(大數值)

用於表示超出 Number類型所能表示的整數範圍的數值,使用n後綴來表示。

const bigNumber = 1234567890123456789012345678901234567890n;

Null(空值)

表示「無值」或「空值」,用於明確指定變數沒有任何資料。

const value = null;

Undefined(未定義)

表示變數已宣告但尚未賦值,或一個物件的屬性不存在。

let name; // 此時 name 是 undefined

Symbol(符號)

  • 唯一性:即使不同的 Symbol 描述相同,它們的值也不會相同,因此不會產生屬性名的衝突。
  • 隱藏屬性Symbol 鍵的屬性不會被 for...inObject.keys() 等迴圈方法列出,這讓你可以創建一些私有屬性。
// 創建一個 Symbol
const uniqueId = Symbol("id"); // 描述為 "id"

// 創建一個物件,使用 Symbol 作為屬性名
const user = {
name: "Alice",
[uniqueId]: 12345 // 使用 Symbol 作為屬性鍵
};

// 存取屬性
console.log(user.name); // 輸出 "Alice"
console.log(user[uniqueId]); // 輸出 12345

// 使用另一個 Symbol,雖然描述相同,但仍然是不同的 Symbol
const anotherId = Symbol("id");
console.log(anotherId === uniqueId); // 輸出 false,因為每個 Symbol 都是唯一的
const secret = Symbol("secret");

const data = {

publicInfo: "這是公共資料",

[secret]: "這是私密資料"

};

console.log(data.publicInfo); // 輸出 "這是公共資料"

console.log(data[secret]); // 輸出 "這是私密資料"

// 這裡不會列出私密資料

for (let key in data) {

console.log(key); // 只會輸出 "publicInfo"

}

console.log(Object.keys(data)); // 只會輸出 ["publicInfo"]


物件 (objects)

除了上述的七個原生值以外的存在,在 JavaScript 當中都是物件。例如 : Objects(物件)、Array (陣列) 、 Function (函式)。


如何辨別資料型別?

1. 使用 typeof 運算符

let num = 42;
console.log(typeof num); // 輸出 "number"

let text = "Hello";
console.log(typeof text); // 輸出 "string"

let isAvailable = true;
console.log(typeof isAvailable); // 輸出 "boolean"

let obj = { name: "John" };
console.log(typeof obj); // 輸出 "object"

let arr = [ 1, 2, 3];
console.log(typeof arr); // 輸出 "object"

let notDefined;
console.log(typeof notDefined); // 輸出 "undefined"

console.log(typeof function() {}); // 輸出 "function"

// 例外
console.log(typeof null); // object

2. 使用 Array.isArray() 檢查陣列

let arr = [1, 2, 3];
console.log(Array.isArray(arr)); // 輸出 true

let notArr = { name: "John" };
console.log(Array.isArray(notArr)); // 輸出 false

3. 使用 Object.prototype.toString.call()

console.log(Object.prototype.toString.call(42));           // "[object Number]"
console.log(Object.prototype.toString.call("Hello")); // "[object String]"
console.log(Object.prototype.toString.call(true)); // "[object Boolean]"
console.log(Object.prototype.toString.call(null)); // "[object Null]"
console.log(Object.prototype.toString.call(undefined)); // "[object Undefined]"
console.log(Object.prototype.toString.call([1, 2, 3])); // "[object Array]"
console.log(Object.prototype.toString.call({ name: "John" })); // "[object Object]"



留言
avatar-img
留言分享你的想法!
avatar-img
koko的沙龍
1會員
34內容數
koko的沙龍的其他內容
2025/04/30
React 事件處理:讓網頁動起來~ 網頁的互動性是吸引使用者、提供良好體驗的關鍵。 在 React 中,透過監聽使用者的操作(例如點擊、滑鼠移動、鍵盤輸入),並執行相應的程式碼,來實現豐富的互動效果。
Thumbnail
2025/04/30
React 事件處理:讓網頁動起來~ 網頁的互動性是吸引使用者、提供良好體驗的關鍵。 在 React 中,透過監聽使用者的操作(例如點擊、滑鼠移動、鍵盤輸入),並執行相應的程式碼,來實現豐富的互動效果。
Thumbnail
2025/04/28
在 React 的世界裡,Props 負責從父元件向子元件傳遞資料,而 State 則是負責管理元件自身的內部資料。 State 就像元件的記憶,可以儲存元件的狀態,並根據狀態的變化來更新 UI。
Thumbnail
2025/04/28
在 React 的世界裡,Props 負責從父元件向子元件傳遞資料,而 State 則是負責管理元件自身的內部資料。 State 就像元件的記憶,可以儲存元件的狀態,並根據狀態的變化來更新 UI。
Thumbnail
2025/04/27
在 React 的世界裡,元件 (Component) 就像一個個獨立的個體,各自負責 UI 的一部分,要讓這些個體協同工作,就需要一種溝通的機制,而 Props 就是組件之間通信和數據傳遞的主要方式。
Thumbnail
2025/04/27
在 React 的世界裡,元件 (Component) 就像一個個獨立的個體,各自負責 UI 的一部分,要讓這些個體協同工作,就需要一種溝通的機制,而 Props 就是組件之間通信和數據傳遞的主要方式。
Thumbnail
看更多
你可能也想看
Thumbnail
嗨!歡迎來到 vocus vocus 方格子是台灣最大的內容創作與知識變現平台,並且計畫持續拓展東南亞等等國際市場。我們致力於打造讓創作者能夠自由發表、累積影響力並獲得實質收益的創作生態圈!「創作至上」是我們的核心價值,我們致力於透過平台功能與服務,賦予創作者更多的可能。 vocus 平台匯聚了
Thumbnail
嗨!歡迎來到 vocus vocus 方格子是台灣最大的內容創作與知識變現平台,並且計畫持續拓展東南亞等等國際市場。我們致力於打造讓創作者能夠自由發表、累積影響力並獲得實質收益的創作生態圈!「創作至上」是我們的核心價值,我們致力於透過平台功能與服務,賦予創作者更多的可能。 vocus 平台匯聚了
Thumbnail
【Kotlin 入門指南】系列文章目錄:https://bit.ly/3t8awwL Kotlin 線上課程教學影片:https://bit.ly/3qJ5a5Q 整數與浮點數 在 Kotlin 中,整數和浮點數可以進行基本的數學運算,如:加、減、乘和除法等。 資料類型宣告方式 方法一
Thumbnail
【Kotlin 入門指南】系列文章目錄:https://bit.ly/3t8awwL Kotlin 線上課程教學影片:https://bit.ly/3qJ5a5Q 整數與浮點數 在 Kotlin 中,整數和浮點數可以進行基本的數學運算,如:加、減、乘和除法等。 資料類型宣告方式 方法一
Thumbnail
資料型態-變數概念 上面這張圖片傳傳達了三個概念, 常值:可以是數值、浮點數、字串、布林等資料, 變數名稱:這邊也很好理解,就是好記得名稱,這邊使用中文是方便初學者入門, 盒子:代表在Python底層運作的狀況,Python創建變數時,會先在記憶體創建型態物件,這邊是數字型態,所以創建數字物件。
Thumbnail
資料型態-變數概念 上面這張圖片傳傳達了三個概念, 常值:可以是數值、浮點數、字串、布林等資料, 變數名稱:這邊也很好理解,就是好記得名稱,這邊使用中文是方便初學者入門, 盒子:代表在Python底層運作的狀況,Python創建變數時,會先在記憶體創建型態物件,這邊是數字型態,所以創建數字物件。
Thumbnail
👨‍💻簡介 Go 語言有各種資料型別,分為基本型別和複合型別。基本型別包括: 整數、浮點數、布林值、字串 複合型別包括: 陣列、片段、結構、函式、對映、通道、介面 等。 整數型別 整數型別有許多種,像是 int8、int16、int32、int64。我們可以依據實際需求選擇。
Thumbnail
👨‍💻簡介 Go 語言有各種資料型別,分為基本型別和複合型別。基本型別包括: 整數、浮點數、布林值、字串 複合型別包括: 陣列、片段、結構、函式、對映、通道、介面 等。 整數型別 整數型別有許多種,像是 int8、int16、int32、int64。我們可以依據實際需求選擇。
Thumbnail
👨‍💻簡介 在 Golang 中,你可以使用不同的方式來宣告變數和常數。宣告變數時,可以直接指定值,或者使用型別推導,更簡單地用 := 來宣告局部變數。另外,還可以一次宣告多個變數,相同型別的變數可以一起宣告,或者使用括號宣告不同型別的變數。常數則使用 const 關鍵字宣告,確保值不變
Thumbnail
👨‍💻簡介 在 Golang 中,你可以使用不同的方式來宣告變數和常數。宣告變數時,可以直接指定值,或者使用型別推導,更簡單地用 := 來宣告局部變數。另外,還可以一次宣告多個變數,相同型別的變數可以一起宣告,或者使用括號宣告不同型別的變數。常數則使用 const 關鍵字宣告,確保值不變
Thumbnail
這次分享的是常數、變數、宣告與初始化。 [常數]就是固定不變的數,如:PI=3.14 [變數]顧名思義就是會改變的數,如:y=2x (在數學中x確定後y才會確定,因此x為自變數,y為應變數,x、y都屬於變數) 一、常數   常數在定義的時候,一開始就必須指定好資料型別並且給予值,因為它在整個程式在執
Thumbnail
這次分享的是常數、變數、宣告與初始化。 [常數]就是固定不變的數,如:PI=3.14 [變數]顧名思義就是會改變的數,如:y=2x (在數學中x確定後y才會確定,因此x為自變數,y為應變數,x、y都屬於變數) 一、常數   常數在定義的時候,一開始就必須指定好資料型別並且給予值,因為它在整個程式在執
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News