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