原文链接:https://note.noxussj.top/?source=cloudtencent
常见的 ES5 数据类型分为基本数据类型、引用数据类型两种。包含字符串、数字、对象、数组、函数、布尔值、空值、未知。
基本数据类型
String 类型(字符串)
代码语言:javascript复制var name = 'xiaoming'
Number 类型(数字)
代码语言:javascript复制var age = 20
Boolean 类型(布尔值)
代码语言:javascript复制var isXiaoMing = true
Null 类型(空值)
代码语言:javascript复制var name = null
Undefined 类型(未知、找不到)
代码语言:javascript复制var name = undefined
引用数据类型
Object 类型(对象)
代码语言:javascript复制var person = {
name: 'xiaoming',
age: 20
}
Array 类型(数组)
代码语言:javascript复制var names = ['xiaoming', 'xiaohong']
Function 类型(函数)
代码语言:javascript复制function toEat() {
return '我会吃饭'
}
以上两种数据类型的区别
注意
以下概念有点偏向计算机原理了,理解起来可能没那么容易。
基本数据类型和引用数据类型的区别在于它们在内存中存储的方式不同,基本数据类型的数据是存储在栈中,而引用类型的数据是存储在堆中。
基本类型存储方式
复制出来独立的一个值。
代码语言:javascript复制var a = 'xiaoming'
var b = 'libai'
var c = b
栈
变量名 | 变量类型 | 变量值 |
---|---|---|
a | String | "xiaoming" |
b | String | "libai" |
c | String | "libai" |
引用类型存储方式
复制的是指针地址,但是两个地址都是指向同一个数据。
代码语言:javascript复制var obj1 = { name: 'xiaoming', age: 18 }
var obj2 = obj1
栈
变量名 | 变量类型 | 变量值 |
---|---|---|
a | Object | 0x000001 |
b | Object | 0x000001 |
堆
地址名称 | 属性 name | 属性 age |
---|---|---|
0x000001 | "xiaoming" | 18 |