JavaScript中将数据类型分为基本数据类型和引用数据类型,它们其中有一个区别就是存储的位置不同。
基本数据类型
基本数据类型都是一些简单的数据段,它们是存储在栈内存中。
- 数值(number):整数和小数(比如
1
和3.14
)。 - 字符串(string):文本(比如
Hello World
)。 - 布尔值(boolean):表示真伪的两个特殊值,即
true
(真)和false
(假)。 undefined
:表示“未定义”或不存在,即由于目前没有定义,所以此处暂时没有任何值。null
:表示空值,即此处的值为空。- Symbol(ES6引入)
引用数据类型
引用数据类型是保存在堆内存中的,然后在栈内存中保存一个对堆内存中实际对象的引用。所以,JavaScript中对引用数据类型的操作都是操作对象的引用而不是实际的对象。
可以理解为,栈内存中保存了一个地址,这个地址和堆内存中的实际值是相关的。
- 对象(Object)
- 数组(Array)
- 函数(Function)。
函数其实是处理数据的方法,JavaScript 把它当成一种数据类型,可以赋值给变量,这为编程带来了很大的灵活性,也为 JavaScript 的“函数式编程”奠定了基础。
示例
let number = 20 //数值
let score = 80.5 //数值
let myName = "zhangsan" //字符串
let flag = true //布尔值
//对象
let obj = {
name: 'zhang',
age: 20
}
//数组
let arr = [1, 2, 3, 'zhang', 'wang']
//函数
function fn() {
}
动态类型
JavaScript 拥有动态类型。这意味着相同的变量可用作不同的类型:
let a = 5 //存放数值,变量为数值类型
a = "zhang" //存放字符串,此时变量成了字符串类型
a = [1,2,3] //丰放数组,此时变量成了数组类型
a = function(){ //存入函数,此时变量又变成了函数
}