1、js的基本数据类型
1、js有6中基本数据类型:
-
Number
-
string
-
undefined
-
boolean
-
null
-
ES6中新增2种类型:
Symbol((用于表示独一无二的值)
bigint (BigInt是可以表示任意精度整数的基本数据类型,存储于栈(stack)中)
2、1种引用型数据 object(包括对象、数组、函数)
object同时存放在堆和栈中
引用数据类型存储在堆(heap)中的对象,占据空间大、大小不固定,如果存储在栈中,将会影响程序运行的性能;引用数据类型在栈中存储了指针,该指针指向堆中该实体的起始地址。当解释器寻找引用值时,会首先检索其在栈中的地址,取得地址后从堆中获得实体。
数据类型分为基本数据类型和引用数据类型,基本数据类型的值是不可变得
2、typeof可以判断的类型有:
1、所有的值类型:
-
undefined
-
string
-
number
-
boolean
-
symbol
2、可以判断函数function
3、可以判断是否是引用类型
-
object
(如果需要判断是否是数组或者对象,需要用到instanceof)
3、 typeof 运算符返回值类型
typeof 返回一个表示数据类型的字符串,返回结果包括:number、boolean、string、symbol、object、undefined、function 等 7 种数据类型,但不能判断 null、array 等
4、typeof
和instanceof
的使用与区别
-
instanceof 是用来判断 A 是否为 B 的实例
-
typeof 返回一个表示数据类型的字符串
5、NaN == NaN 执行结果是 false
JavaScript的规定,NaN表示的是非数字, 但是这个非数字也是不同的,因此,NaN 不等于 NaN,并且两个NaN永远不可能相等。
6、严格运算符===
只能用于判断 null 和 undefined,因为这两种类型的值都是唯一的。
null === undefined 结果为false
7、Symbol
1、Symbol()
Symbol()返回的symbol值都是唯一的
2、Symbol.for()
它接受一个字符串作为参数,然后全局环境中搜索是否有以该参数注册的Symbol值。如果有,就返回这个Symbol值。没有就创建并返回一个以该字符串作为名称的Symbol值。
3、Symbol.keyFor()
在全局注册表中搜索查找改symbol,如果有返回该symbol的key值,形式为string。如果没有返回undefined。