javscript数据类型
Contents
基本数据类型
7种:
-
Undefined
-
Null
-
Boolean
-
String
-
Number
-
BigInt(主要用的大数据。number最大值2的53次方,超过只能使用BigInt)
-
Symbol
NaN 属于 number 类型,并且 NaN 不等于自身。 bigint 理论上属于 number 类型,但在 typeof 中是
bigint
特点
-
值是不可变的
let name = 'java'; name.toUpperCase(); // 输出 'JAVA' console.log(name); // 输出 'java'
-
存放在栈内存
原始数据类型的数据占据空间小、大小固定,属于被频繁使用数据,所以放入栈中存储。
-
值的比较
可以正常比较。
let a = 1; let b = true; console.log(a == b); // true console.log(a === b); // false
引用数据类型
6种:
- Object(普通类型)
- Array(数组对象)
- RegExp(正则对象)
- Date(日期对象)
- Math(数据对象)
- Function(函数对象)
特点
-
值是动态可变的
let a={age:20}; a.age=21; console.log(a.age)//21
-
栈内存中存储指针,堆内存存储实体
引用数据类型的数据大小不固定,占据空间大,如果存储在栈中,将会影响程序运行的性能;所以引用数据类型在栈中仅存储了指针,该指针指向堆中该实体的起始地址。
当解释器寻找引用值时,会首先检索其在栈中的地址,取得地址后从堆中获得实体。
-
赋值只会赋值指针
当将引用类型的值赋给另一个变量时,仅会复制数据的指针。改变其中任何一个变量,都会相互影响
var a={age:20}; var b=a; b.age=21; console.log(a.age==b.age)//true
null 和 undefined 区别
- null 表示对象的值未设定。
- 作为对象原型链的终点。
- 作为标识,表示变量未指向任何对象。
- undefined 表示没有被定义。
- 定义了形参,没有传实参,显示 undefined。
- 对象属性名不存在时,显示 undefined。
- 函数没有写返回值,即没有写 return,返回 undefined
- 写了 return,但没有赋值,拿到的是 undefined