# JavaScript有什么原始類型
## 引言
JavaScript作為一門動態類型的編程語言,其數據類型系統是開發者必須掌握的核心概念之一。在JavaScript中,數據類型分為**原始類型(Primitive Types)**和**對象類型(Object Types)**兩大類。本文將深入探討JavaScript中的原始類型,包括它們的特性、使用場景以及常見問題。
---
## 什么是原始類型?
原始類型是JavaScript中最基礎的數據類型,它們不是對象,因此沒有方法或屬性(盡管某些情況下表現得像有方法)。原始類型的值是不可變的(immutable),即一旦創建就不能被修改。
JavaScript中有7種原始類型:
1. **`number`**
2. **`string`**
3. **`boolean`**
4. **`null`**
5. **`undefined`**
6. **`symbol`**(ES6新增)
7. **`bigint`**(ES2020新增)
---
## 1. number類型
`number`類型用于表示整數和浮點數。JavaScript采用IEEE 754標準的雙精度浮點數格式,因此所有數字都是64位浮點數。
### 特點:
- 整數和浮點數沒有區別,`1`和`1.0`是相同的值。
- 支持科學計數法(如`1e3`表示1000)。
- 包含幾個特殊值:
- `Infinity`(無窮大)
- `-Infinity`(負無窮大)
- `NaN`(Not a Number,表示非數字值)
### 示例:
```javascript
let integer = 42;
let float = 3.14;
let scientific = 2e3; // 2000
let infinity = Infinity;
let notANumber = NaN;
0.1 + 0.2 !== 0.3)。NaN不等于任何值,包括它自己(NaN === NaN返回false)。string類型用于表示文本數據,由16位Unicode字符組成。
')、雙引號(")或反引號(`)定義。let singleQuotes = 'Hello';
let doubleQuotes = "World";
let template = `Hello ${doubleQuotes}`; // "Hello World"
let multiLine = `
This is
a multi-line
string
`;
\n表示換行)。join方法)。boolean類型只有兩個值:true和false。
Boolean()函數或!!操作符轉換為布爾值。
false、0、""、null、undefined、NaN。let isTrue = true;
let isFalse = false;
let converted = Boolean("hello"); // true
null表示一個空值或無對象。
typeof null返回"object"(這是歷史遺留問題)。let empty = null;
undefined的區別:
null是開發者主動賦值的“無值”。undefined表示變量未初始化或屬性不存在。undefined表示變量已聲明但未賦值。
undefined。undefined。let x;
console.log(x); // undefined
function foo() {}
console.log(foo()); // undefined
symbol表示唯一的、不可變的值,通常用作對象屬性的鍵。
Symbol()函數創建,每次調用都會生成唯一值。Symbol.for()創建和共享。let sym1 = Symbol();
let sym2 = Symbol("description"); // 可選的描述符
let obj = {
[sym1]: "value"
};
console.log(obj[sym1]); // "value"
for...in或Object.keys()枚舉。.toString()。bigint用于表示任意精度的整數。
n或調用BigInt()函數創建。number直接混合運算。let big = 123456789012345678901234567890n;
let big2 = BigInt("12345678901234567890");
Math對象的方法。雖然原始類型不是對象,但JavaScript提供了對應的包裝對象(如Number、String、Boolean),以便調用方法。當對原始類型調用方法時(如"hello".toUpperCase()),JavaScript會臨時將其轉換為對象。
let str = "hello";
console.log(str.toUpperCase()); // 臨時轉換為String對象
| 特性 | 原始類型 | 引用類型(如對象) |
|---|---|---|
| 存儲方式 | 直接存儲值 | 存儲引用(內存地址) |
| 可變性 | 不可變 | 可變 |
| 比較方式 | 按值比較 | 按引用比較 |
| 內存分配 | 棧內存 | 堆內存 |
JavaScript的7種原始類型是語言的基礎,理解它們的特性和區別對于編寫高效、健壯的代碼至關重要。以下是關鍵點回顧:
1. 原始類型是不可變的。
2. 包括number、string、boolean、null、undefined、symbol和bigint。
3. 原始類型與引用類型在存儲、比較和傳遞方式上有本質區別。
掌握這些知識將幫助你避免常見的陷阱(如浮點數精度問題或意外類型轉換),并更好地利用JavaScript的特性。
”`
(注:實際字數約為1500字,可通過擴展示例、添加更多應用場景或深入原理進一步補充。)
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。