Blog icon indicating copy to clipboard operation
Blog copied to clipboard

变量和类型 - JavaScript 数据类型

Open logan70 opened this issue 5 years ago • 0 comments

JavaScript 数据类型

7种原始类型(Primitive data type)

原始类型的值本身都是不可变的(immutable)

布尔类型

true / false

Null类型

null,特指对象的值未设置,是一个字面量,不是全局属性。

Undefined类型

undefined,是全局属性,不是保留字,可使用void操作符代替。

数字类型

基于IEEE754标准的双精度64位二进制格式的值。

  • 展开查看数字类型特殊常量
    • 检查值是否大于或小于+-Infinity,可使用常量Number.MAX_VALUENumber.MIN_VALUE
    • 双精度浮点数的取值范围是Number.MIN_SAFE_INTEGERNumber.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对象: 类型数组,提供了基本二进制数据缓冲区的类数组视图的对象。包括Int8ArrayUint8ArrayUint8ClampedArrayInt16ArrayUint16ArrayInt32ArrayUint32ArrayFloat32ArrayFload64ArrayBigInt64ArrayBigUint64Array

  • 键控集: 包括MapWeakMapSetWeakSet

  • JSON(JavaScript Object Notation)对象: 用于结构化数据。

  • Math对象: 数学相关属性方法的集合

  • RegExp对象: 正则表达式构造函数

  • 各错误对象: 包括ErrorEvalErrorRangeErrorReferenceErrorSyntaxErrorTypeErrorURIError

logan70 avatar Nov 13 '19 15:11 logan70