Javascript 原始資料類型

Primitive Data Types
Javascript的資料類型有很多種類

今天先介紹原始類型(Primitive Data Types)

  • 數字(Number):表示為數值,可以是整數或浮點數。
    Javascript的數字並不能無限大,會顯示出近似值(比較大或比較小)
    數字多位數的時候,Javascript會使用科學記號e表示
    數字計算最大的結果,會顯示Infinity,Infinity是特殊的數字,表示無窮的意思
1
2
let integerNumber = 42; // 整數
let floatNumber = 3.14; // 浮點數

顯示出近似值(比較大或比較小),console.log結果依據JavaScript引擎和環境的差異會有不同答案,以下只是範例

1
2
3
4
let a = 9999999999999991
console.log(a); // 9999999999999992
let b = 99999999999999911
console.log(b); // 99999999999999900

運算結果太大,會顯示出Infinity

1
2
let c = 99999 ** 99999
console.log(c); // Infinity

另外
NaN(Not-a-Number):名稱雖然是NaN,但是在Javascript是屬於數字
NaN通常由不合法的運算結果產生,可能的狀況如下
將非數字字符串轉換為數字:
parseInt(“Hello”)
0除以0:
0 / 0
數字除以非數字:
5 / “apple”

任何關連到NaN的數學運算結果通常也是NaN

1
2
console.log(NaN + 5); // NaN
console.log(NaN * 2); // NaN

NaN不等於任何值,也不等於自己(NaN)

1
console.log(NaN === NaN); // false

檢查NaN的方法如下

1
2
console.log(isNaN(NaN)); // true
console.log(isNaN(42)); // false
  • 字串(String):表示為文字。字串以單引號或雙引號括起來。

    1
    let greeting = "Hello, World!";
  • 布林值(Boolean):只有兩個值,true或false,用於表示邏輯狀態。

    1
    2
    let isItTrue = true;
    let isItFalse = false;

    另外
    true在數值上等於1
    false在數值上等於0

1
2
console.log(true == 1); // 輸出 true
console.log(false == 0); // 輸出 true

但是使用===,結果完全不同,會比較數值,也比較數據類型

1
2
console.log(true === 1); // 輸出 false,因为它們的類型不同
console.log(false === 0); // 輸出 false,因为它們的類型不同
  • 未定義(Undefined):變數已聲明但未賦值,或是function沒有返回值,沒有做return。
    現在宣告一個變數叫undeclaredVariable
    可以利用typeof這個方法,確認是什麼類型,是undefined

    1
    2
    let undeclaredVariable;
    console.log(typeof undeclaredVariable); //輸出 "undefined"
  • 空值(Null):表示為空值或無效物件。

    1
    let emptyValue = null;

    再次利用typeof,確認null是什麼類型,null是一個物件(object)空的物件,表示空的對象

    1
    console.log(typeof emptyValue); //輸出 "object"
  • 符號(Symbol):創建唯一的識別符號。

特別提醒
符號是ECMAScript 6(ES6)引入的一種新的原始資料型態,它的主要特點是每個符號都是唯一的。具有唯一的特性、不可以重新賦值、另外可以自己對每個符號提供描述。

1
2
3
4
const  a = Symbol();
const b = Symbol();
const c = Symbol();
console.log(a === c); // false

請記得符號唯一的特性,即使符號裡面的描述是一模一樣,也不會和其他符號相等。

1
2
3
const symbol7 = Symbol("mySymbol");
const symbol8 = Symbol("mySymbol");
console.log(symbol7 === symbol8); // false

不可以重新賦值

1
2
const symbol = Symbol("mySymbol");
symbol = Symbol("theirSymbol"); // 這將引發錯誤,無法重新賦值

當使用符號的時候,可以提供描述,描述可以幫助您理解符號的用途或含義,這對於代碼的可讀性和維護性很有幫助。

1
const namedSymbol = Symbol("This is a description");

對不同的符號提供描述

1
2
const info = Symbol("info");
const error = Symbol("error");