Blog
Blog copied to clipboard
变量和类型 - JavaScript 数据类型
JavaScript 数据类型
7种原始类型(Primitive data type)
原始类型的值本身都是不可变的(immutable)
布尔类型
true
/ false
。
Null类型
null
,特指对象的值未设置,是一个字面量,不是全局属性。
Undefined类型
undefined
,是全局属性,不是保留字,可使用void
操作符代替。
数字类型
基于IEEE754标准的双精度64位二进制格式的值。
-
展开查看数字类型特殊常量
- 检查值是否大于或小于
+-Infinity
,可使用常量Number.MAX_VALUE
和Number.MIN_VALUE
。 - 双精度浮点数的取值范围是
Number.MIN_SAFE_INTEGER
和Number.MAX_SAFE_INTEGER
。
- 检查值是否大于或小于
BigInt类型
可以用任意精度表示整数。目的是为了安全地存储和操作大整数,甚至可以超过数字的安全整数限制。
-
展开查看BigInt类型创建方式
通过整数后加n
或调用BigInt
函数创建。const bigNum1 = 123n // 123n const bigNum2 = BigInt(456) // 456n
字符串类型
-
由一组16位的无符号整数值(即UTF-16)构成。
-
每个字符固定为2个字节。对于那些需要4个字节储存的字符(Unicode 码点大于0xFFFF的字符),JavaScript 会认为它们是两个字符。
符号类型
Symbol
,唯一的并且是不可修改的, 并且也可以用来作为Object的key的值。
Object类型
对象是指内存中的可以被标识符引用的一块区域。
-
展开查看对象数据属性的特性(Attributes of a data property)
特性 数据类型 描述 默认值 [[Value]] 任何JS类型 包含这个属性的数据值。 undefined [[Writable]] Boolean 如果该值为 false,则该属性的 [[Value]] 特性 不能被改变。 true [[Enumerable]] Boolean 如果该值为 true,则该属性可以用 for...in 循环来枚举。 true [[Configurable]] Boolean 如果该值为 false,则该属性不能被删除,并且不能被转变成一个数据属性。 true -
展开查看对象访问器属性的特性
特性 数据类型 描述 默认值 [[Get]] 函数对象或者 undefined 该函数使用一个空的参数列表,能够在有权访问的情况下读取属性值。 undefined [[Set]] 函数对象或者 undefined 该函数有一个参数,用来写入属性值。 undefined [[Enumerable]] Boolean 如果该值为 true,则该属性可以用 for...in 循环来枚举。 true [[Configurable]] Boolean 如果该值为 false,则该属性不能被删除,并且 除了 [[Value]] 和 [[Writable]] 以外的特性都不能被改变。 true
“标准”对象
即键和值之间的映射,键是字符串或者Symbol
,值是任意JS类型。
其他对象
-
Function对象: 函数,附带可被调用功能的常规对象。
-
Promise对象: 代表了未来将要发生的事件,用来传递异步操作的消息。
-
Proxy对象: 用于定义基本操作的自定义行为。
-
Reflect对象: 提供拦截 JavaScript 操作的方法。
-
Date对象: 日期对象构造函数,也有静态属性和方法。
-
Array对象: 数组,使用整数作为键(integer-key-ed)属性和长度(length)属性之间关联的常规对象。
-
TypedArray对象: 类型数组,提供了基本二进制数据缓冲区的类数组视图的对象。包括
Int8Array
、Uint8Array
、Uint8ClampedArray
、Int16Array
、Uint16Array
、Int32Array
、Uint32Array
、Float32Array
、Fload64Array
、BigInt64Array
、BigUint64Array
。 -
键控集: 包括
Map
、WeakMap
、Set
、WeakSet
。 -
JSON(JavaScript Object Notation)对象: 用于结构化数据。
-
Math对象: 数学相关属性方法的集合
-
RegExp对象: 正则表达式构造函数
-
各错误对象: 包括
Error
、EvalError
、RangeError
、ReferenceError
、SyntaxError
、TypeError
、URIError
。