-
基本数据类型(值类型)
- 值类型由于结构相对简单,直接把创建的值存储到“栈内存”中即可,所以栈内存有两个作用: 1.供代码执行 2.存储基本类型值
-
引用数据类型(对象函数)
- 引用数据类型的结构相对复杂(一个综合体,包含很多值),不能直接存储在栈内存中,需要单独开辟空间来存储,这个空间就是“堆内存”,引用数据类型值都存储在单独开辟的“堆内存”中!
- 堆内存只有一个作用:存储引用类型值的
关于数据类型之间的区别
对象[属性名] = 属性值(属性名是具体的值,如果是对象,会转换为字符串) 对象中的属性名不能重复,而且数字和字符串如果相同算同一个属性 eg:obj[0] === obj['0'] 对象的属性名只能是字符串,其它类型值,要先转换为字符串,(symbol唯一值,不需要转)
let a = {},
b = '0',
c = 0;
a[b] = '乔治';
a[c] = '佩奇';
console.log(a[b]);
考察的是同一个属性
let a = {},
b = Symbol('1'),
c = Symbol('1');
a[b] = '乔治';
a[c] = '佩奇';
console.log(a[b]);
考察的不同的属性 Symbol是唯一值,两个Symbol是不相等的,在这里是两个属性
Symbol('1').toString() ===Symbol('1').toString() //true
Symbol('1') ===Symbol('1') //false
let a = {},
b = {
n: '1'
},
c = {
m: '2'
};
a[b] = '乔治';
a[c] = '佩奇';
console.log(a[b]);
转换为字符串为同一个属性 属性名不能是对象,对象需要转换位字符串