一、JS的数据类型
基本数据类型:String、Number、Boolean、undefined、null、Symbol(ES6)、BigInt(ES10)
引用数据类型:Object(包括Array、Function和如RegExp、Date、Math等内置对象)。
1.两种数据类型的区别
1.1基本数据类型
1、存储于栈内存中。
2、值不可变
let number = 10; // 变量number指向内存中的地址A,地址A中存储着值10
console.log(number); // 输出10
number = 20; // 变量number现在指向内存中的新地址B,地址B中存储着值20,同时地址A中的值10保持不变,但此时已无法通过变量number访问它
console.log(number); // 输出20
3、创建变量时,直接存储变量的值,只要值相等,变量的内就相等。
let a = '1';
let b = '1';
console.log(a === b); // 输出 true
1.2引用数据类型
1、存储于堆内存中。
2、属性值是可变的。
// 创建一个对象,并将其引用赋给变量obj,此时obj指向内存中的地址A,地址A中存储着对象{name: 'Jack'}
const obj = {
name: 'Jack'};
// 输出变量obj所引用的对象,即输出地址A中的对象
console.log(obj); // 输出:{name: 'Jack'}
// 修改变量obj所引用的对象的name属性为'Alice',此时地址A中的对象内容被改变,但地址A保持不变,obj仍然指向它
obj.name = 'Alice';
// 再次输出变量obj所引用的对象,即再次输出地址A中的对象,此时对象的name属性已经被修改
console.log(obj);