数据类型
1.结论
- JS 数据类型分为
两大类
及八种数据类型
。(到目前为止) - JavaScript 是一种弱类型或者说动态语言。这意味着你不用提前声明变量的类型,在程序运行过程中,类型会被自动确定
2.数据类型
- 简单(基本)类型(除对象类型(object)以外的其它任何类型定义的不可变的值(值本身无法被改变))
Boolean
: true/falseNULL
:nullUndefined
:undifinedNumber
:任意数值BigInt
:大整数String
:任意字符串Symbol
:唯一且不可修改的原始值
- 复杂(引用)类型
Object
Function
:一种特别的对象(可以执行)Array
: 一种特别的对象(数值下标,有序的)
3.简要说明
3.1 Boolean
**Boolean
**对象是一个布尔值的对象包装器。
通篇看下来,建议使用
Boolean()
/!!
; 不建议使用new Boolean()
,来创建一个布尔类型的值
3.2 NULL
表示一个不存在或者无效object或者地址引用。语言实现中空引用的含义各不相同。
在 JavaScript,null是原始值之一
typeof null // "object" (因为一些以前的原因而不是'null')
typeof undefined // "undefined"
null === undefined // false
null == undefined // true
null === null // true
null == null // true
!null //true
isNaN(1 + null) // false
isNaN(1 + undefined) // true
3.3 Undefined
一个没有被赋值的变量会有个默认值 undefined
;
函数不设置返回值,默认返回 undefined
- 注意
undefined
在js中不是保留字符,但是我们应当尽量避免使用undefined
做标识符undefined
和undefined
进行比较必须使用全等才会为true;- 自es5标准,
undefined
是一个不能被配置(non-configurable),不能被重写(non-writable)的属性。
3.4 Number
- JavaScript的
Number
类型为双精度IEEE 754 64位浮点类型。
-
如果参数无法被转换为数字,则返回
NaN
。会生成
NaN
的场景:Number('foo') // NaN Number('100a') // NaN var tomato Number(tomato) // NaN
-
在非构造器上下文中 (如:没有
new
操作符),Number
能被用来执行类型转换。 -
调用函数
BigInt()
(但不包含new
运算符)并传递一个整数值或字符串值
3.5 BigInt
BigInt
是一种内置对象,它提供了一种方法来表示大于 2^53 - 1
的整数。这原本是 Javascript 中可以用Number
表示的最大数字。BigInt
可以表示任意大的整数。
声明的方法
-
可以用在一个整数字面量后面加
n
的方式定义一个BigInt
,例如10n
-
调用函数
BigInt()
(但不包含new
运算符)并传递一个整数值或字符串值。例如BigInt(123)
==>123n
-
BigInt
和Number
不是严格===
相等的,但是宽松==
相等的。 -
建议仅在值可能大于2^53 时使用
BigInt
类型,并且不在两种类型之间进行相互转换。 -
对任何
BigInt
值使用JSON.stringify()
都会引发TypeError
// 解决办法 BigInt.prototype.toJSON = function() { return this.toString(); }
3.6 String
String
全局对象是一个用于字符串或一个字符序列的构造函数。
3.7 Symbol
-
英译:符号
-
const symbol1 = Symbol(); // 不需要使用 new关键词
-
感觉就是一个唯一的key可用于对象声明一个唯一的属性名
3.8 Object
在计算机科学中, 对象(object)是指内存中的可以被标识符引用的一块区域。
已知的对象
-
数据属性
-
访问器属性
-
日期
-
数组
-
类数组
-
Maps
-
Sets
-
WeakPaps
-
WeakSets
-
JSON
-
标准内置对象