数据类型的区别

104 阅读1分钟
  • 基本数据类型(值类型)

    • 值类型由于结构相对简单,直接把创建的值存储到“栈内存”中即可,所以栈内存有两个作用: 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]); 
            转换为字符串为同一个属性  属性名不能是对象,对象需要转换位字符串