精英内训

JS数据类型

2025-02-28  本文已影响0人  精英刘恋

1. 原始类型(Primitive Types)

(1) **number** - 数字类型

范围:包含整数、浮点数、特殊值(Infinity, -Infinity, NaN)

示例

javascript

42          // 整数

3.14        // 浮点数

NaN          // 非数字(Not a Number)

1e5          // 科学计数法(100000)

(2) **string** - 字符串类型

特点:用单引号 ''、双引号 "" 或反引号 ` ` 包裹

示例

javascript

'Hello'"JavaScript"`模板字符串:${1 + 2}` // 输出 "模板字符串:3"

(3) **boolean** - 布尔类型

取值:true 或 false

示例

javascript

const isStudent = true;

const isAdmin = false;

(4) **null** - 空值

作用:表示“无”、“空”或“值未知”的明确赋值

注意:typeof null 返回 "object"(历史遗留问题)。

示例

javascript

let user = null; // 显式赋值为空

(5) **undefined** - 未定义

场景:变量声明但未赋值时默认值。

示例

javascript

let age;console.log(age); // 输出 undefined

(6) **symbol** - 唯一标识符(ES6+)

特点:唯一且不可变,常用于对象属性的键。

示例

javascript

const id = Symbol('id'); // 即使描述相同,Symbol 值也不同

(7) **bigint** - 大整数(ES11+)

作用:表示任意长度的整数,后缀加 n。

示例

javascript

const bigNumber = 123456789012345678901234567890n;

2. 对象类型(Object Types)

(1) **object** - 普通对象

结构:键值对集合。

示例

javascript

const person = {  name: 'Alice',  age: 30 };

(2) **array** - 数组

特点:有序数据集合,索引从 0 开始。

示例

javascript

const colors = ['red', 'green', 'blue'];

(3) **function** - 函数

说明:可执行代码块,typeof function() {} 返回 "function"。

示例

javascript

function add(a, b) {  return a + b; }

(4) 其他内置对象

常见类型

Date(日期)、RegExp(正则表达式)、Set(集合)、Map(映射)等。

数据类型检测方法

1. **typeof 运算符**

javascript

typeof 42            // "number"

typeof 'hello'      // "string"

typeof true          // "boolean"

typeof undefined    // "undefined"

typeof Symbol()      // "symbol"

typeof 10n          // "bigint"

typeof {}            // "object"

typeof []            // "object"(数组也是对象)

typeof function() {} // "function"

typeof null          // "object"(历史遗留问题)

2. **instanceof 运算符**

作用:检测对象是否属于某个构造函数。

javascript

[] instanceof Array      // tru

e{} instanceof Object    // true

3. **Object.prototype.toString.call()**

精确检测类型

javascript

Object.prototype.toString.call(42)        // "[object Number]

"Object.prototype.toString.call(null)      // "[object Null]"

Object.prototype.toString.call([1, 2])    // "[object Array]"

关键区别

特征原始类型对象类型

存储方式值直接存储在栈内存引用地址存储在栈,值在堆内存

赋值行为复制值本身(值传递)复制引用地址(引用传递)

可变性不可变(修改会创建新值)可变(可修改属性)

比较方式比较值是否相等比较引用地址是否相同

代码示例

javascript

// 原始类型比较(值相等)const a = 10;

const b = 10;console.log(a === b);

 // true// 对象类型比较(引用不同)const obj1 = { name: 'Alice' };

const obj2 = { name: 'Alice' };

console.log(obj1 === obj2); // false

上一篇 下一篇

猜你喜欢

热点阅读