原始数据类型:
number、string、null、undefines、Boolean、symbol(es6)
number: js只有一种数据类型,可以是小数和整数。
let a = 3;
let b = 3.14;
string: 字符串可以是引号中的任意文本,单双引号都可以
let name = '飞哥';
Boolean: 只有两个值,true和false
let a = true;
let b = false;
symbol: es6中新增了symbol数据类型,一个 symbol类型的值通过Symbol
函数生成的
let s1 = Symbol('s');
undefined: 属性用于存放 JavaScript 的 undefined 值
null: 表示一个空对象指针
undefined表示变量不含值,可以设置变量为null对象来清空
Symbol函数的特性是每一个Symbol函数的返回值都是唯一的,可以通过给symbol函数传递不同的参数产生具有不同标记的值,但是即使相同参数返回的也是唯一的,不同的,也就是说Symbol('s') != Symbol('s')。
引用数据类型:
数组(Arry)、对象(Object)、函数(function)
Arry:由中括号"[]"分隔,属性由逗号‘,’隔开
let a = [1, 2, 3]
Object:对象由花括号"{}"分隔,在括号内属性以键和值的对应形式(key: value),属性由逗号‘,’隔开
let person = {
name: 'feige',
age: 28
}
function: 函数
function sayName() {
console.log('hello word')
}
从存贮上来讲:
栈(stack)和堆(heap)
栈(stack):自动分配内存空间,它由系统自动释放;
堆(heap):动态分配内存,大小也不一定,也不会自动释放;
基本数据类型是指存放在栈(stack)中的简单数据,数据大小确定,内存空间可以分配,他们直接是按值存放的,所以可以直接按值访问。
例如:
let a = 10,
let b = 20
console.log(a) // 10
console.log(b) // 20
应用数据类型是存放在堆(heap)内存中的对象,变量其实是保存在栈(stack)内存中的一个指针(保存的是引用地址),这个指针指向堆(heap)内存;
如图所示
let obj1 = {
name: '飞哥',
age: 28
}
let obj2 = obj1