JavaScript中的intrinsic(固有)数据类型是什么?
JavaScript中的Intrinsic(固有)数据类型是什么?
嘿,我来给你把这个概念讲明白~在JavaScript里,intrinsic(固有)数据类型其实就是引擎原生内置的、最底层的原始数据类型——它们是构成所有JS值的基础单元,本身不是对象,也没有自己的属性/方法(不过实际使用中有些看似能调用方法,是引擎偷偷做了包装,后面会说)。
所有的Intrinsic数据类型包括:
undefined:表示变量声明后未赋值的状态,或者函数没有返回值时的结果,比如let a; console.log(a)就会输出undefined。null:表示一个刻意设置的“空值”,注意它是原始类型哦,虽然用typeof null会返回'object',这是JS早期的历史bug,千万别被误导。boolean:只有两个值的类型——true和false,用来表示逻辑判断的结果。number:用于表示数值,包括整数、浮点数,还有一些特殊值比如NaN(非数字)、Infinity(无穷大)。string:表示文本内容,用单引号、双引号或者反引号包裹,比如'hello'、"world"。symbol:ES6新增的类型,每个symbol值都是唯一且不可变的,常用来作为对象的私有属性键,避免属性名冲突。bigint:ES2020新增的类型,用来表示超出number类型范围(大于253-1或小于-253+1)的整数,写法是在数字后面加n,比如9007199254740991n。
容易混淆的小细节:
你可能会疑惑,为什么字符串能调用slice()、toUpperCase()这类方法?其实这是JS引擎的“语法糖”——当你对原始字符串调用方法时,引擎会临时把它包装成对应的String对象,调用完方法后再销毁这个对象,本质上字符串还是原始的intrinsic类型。举个例子:
const greeting = 'hi there'; console.log(typeof greeting); // 输出 'string'(原始类型) console.log(greeting.toUpperCase()); // 输出 'HI THERE' —— 引擎临时创建了String对象来调用方法
和非Intrinsic类型的区别:
像对象(包括数组、函数、日期、正则表达式这些)都不属于intrinsic数据类型,它们是基于原始类型构建的复杂结构,本质上是引用类型,有自己的属性和方法,并且可以被修改。
内容的提问来源于stack exchange,提问作者Eduard
相关产品推荐
相关产品推荐

