JavaScript基础类型知识

1 阅读3分钟

JS基础数据类型

  • String
  • Number
  • Boolean
  • Null
  • Undefined
  • Symbol(ES6+)
  • BigInt

基础数据类型,无指针,存储在 栈内存 (Stack)  中,当一个变量被赋值为基本类型时,它直接持有该值,

主要说新增的ES6+的两个常用基本类型Symbol 和 BigInt

  • Symbol(符号、标识): 用来创建唯一、不可复制的标识符,解决命名冲突问题,
  • BigInt: 用来表示超大整数, 解决js普通数字精度丢失问题
特性SymbolBigInt
作用创建唯一标识符表示任意精度的大整数
值特点永远唯一,即使描述相同也不相等可以是极大 / 极小的整数,无精度限制
相等性Symbol('a') !== Symbol('a')10n === 10n
运算不能做数学运算支持加减乘除等整数运算
类型typeof Symbol() → "symbol"typeof 10n → "bigint"
转换不能转数字 / 不能运算可转数字(小值)
典型场景对象私有属性、避免属性名冲突超大数值、ID、金额、时间戳

如下实际code说明:

// Symbol 类型
//  Symbol 是 JavaScript 中的一种基本数据类型,表示独一无二的值。每个 Symbol 都是唯一的,即使它们具有相同的描述。Symbol 通常用于对象属性的键,以避免属性名冲突。

// 创建 Symbol  
const sym1 = Symbol('description');
const sym2 = Symbol('description');
console.log(sym1 === sym2); // false    

// 用作对象唯一属性
const obj = {
    [sym1]: 'value1',
    [sym2]: 'value2',
};
console.log(obj[sym1]); // 'value1'
console.log(obj[sym2]); // 'value2'

// 特点
// 1. Symbol 类型的值是唯一的,即使它们具有相同的描述。 
// 2. Symbol 类型的值不能转换为字符串,也不能用于对象的键。访问需要使用方括号语法。如obj[sym1],而不能使用点语法obj.sym1。
// 3. Symbol 类型的值可以通过 Symbol.for() 方法创建,这些值是全局共享的,可以通过相同的键访问到同一个 Symbol。
const globalSym1 = Symbol.for('global');
const globalSym2 = Symbol.for('global');
console.log(globalSym1 === globalSym2); // true
// 类型
console.log(typeof sym1); // 'symbol'

console.log('--------BigInt')
// BigInt 类型
// BigInt 是 JavaScript 中的一种基本数据类型,用于表示任意精度的整数。它可以表示比 Number 类型更大的整数,适用于需要处理大整数的场景。  
// 创建 BigInt
const bigInt1 = 123n;
console.log(bigInt1); // 123n
console.log(typeof bigInt1); // 'bigint'
console.log(bigInt1 + 1n); // 124n
console.log(bigInt1 * 2n); // 246n

// 特点
// 1. BigInt 类型的值以 n 结尾,表示这是一个 BigInt 字面量。 
// 2. BigInt 类型的值可以通过 BigInt() 函数创建,也可以直接使用字面量语法。 
// 3. BigInt 类型的值不能与 Number 类型的值进行混合运算,需要显式转换。 
// 4. BigInt 类型的值可以表示任意精度的整数,但不能表示小数或浮点数。       

console.log(10n === 10n); // true

小结:

typeof 基础数据类型检测,都是对应的基础数据类型,如Number、String、Boolean、Undefined、Symbol、BigInt。 但是 typeof null 的类型为object 理解为什么typeof null的类型为 object, 可以参考原型链最顶层 Object.prototype.__proto__ === null

如下截图所示:

image.png