JavaScript中数据类型包含:基础数据类型,引用数据类型。
基础数据类型包含:String(字符串),Number(数字),Boolean(布尔值),Null(空),Undefined(未定义)5种;
引用数据类型:Object(对象)
1、基础数据类型仅能保存一个值,引用数据类型可以保存多个值。
//一个变量只有一个值
var a = 6;
var b = "我是字符串";
var c = false;
//对象中可以储存多个属性,每个属性都可以赋值
var game = new Object();
game.name = "死亡搁浅";
game.studio = "小岛工作室";
game.platform = "ps4";
2、基础数据类型的值存储在栈内存中,每个变量的值都是独立的,修改后相互不影响;引用数据类型,栈内存中的值,是存储在堆内存中的地址,多个变量可以指向相同的地址。
var a = 6;
var b = a;
a++;
console.log("a的值为 " + a);
console.log("b的值为" + b);
//浏览器输出结果为:a的值为7,b的值为6,因为a和b是彼此独立的,修改a不会影响b
//关键词new为在堆内存中创建一个对象;
var obj1 = new Object();
var obj2 = obj1;
obj1.name = "死亡搁浅";
console.log(obj2.name);
//浏览器输出结果为:死亡搁浅,因为obj2和obj1指向相同,都是堆内存中的同一个地址
obj2 = null;
console.log(obj1.name);
//浏览器输出结果为:死亡搁浅,修改obj2的值并不会影响对象的值,因为obj2的值是存储在栈内存中的地址,
//删除地址不会影响对象
3、比较两个数据类型的值时,基础数据类型比较的是栈内存中的值,引用数据类型比较的是堆内存中的地址。
var obj1 = new Object();
obj1.name = "死亡搁浅";
var obj2 = new Object();
obj2.name = "死亡搁浅";
console.log(obj1 ===obj2);
//浏览器输出结果为false,因为引用数据类型比较的是堆内存中的地址,obj1和obj2在堆内存中的地址并不相同