数据类型之间的区别

124 阅读2分钟

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在堆内存中的地址并不相同