前端面试:说说JavaScript中数据类型及其存储上的区别 ?

前端面试:说说JavaScript中数据类型及其存储上的区别 ?_第1张图片

-- 在 JavaScript 中 , 我们可以分为两种类型:基本类型 引用类型。两者类型的区别就是:存储位置不一样。

数据类型

1: 基本类型主要为6种: {

                Number

                String:字符串是不可变的,意思是一旦创建,它们的值就不能变了。

                Boolan:类型有两个字面值: true  false。

                Undefined: 当使用 var或 let声明了变量切没有初始化时,就相当于给变量赋予了 undefined值。

                null:表示一个空对象指针,这也是给 typeof 传一个 null 会返回 "Object" 的原因。

                symbol:是原始值,且符号实例是唯一、不可变的。符号的用途是确保对象属性使用唯一标识符,不会发生属性冲突的危险。

}

———————————————————————————————————————————

2:引用类型 :{

                Object:常用方式为对象字面量表示法,属性名可以是字符串或数值。

                Aeeay:JavaScript数组是一组有序的数据,但跟其他语言不同的是,数组中每个槽位可以存储任意类型的数据。并且,数组也是动态大小的,会随着数据添加而自动增长

                Function:函数实际上是对象,每个函数都是 function类型的实例,而 function也有属性和方法,跟其他引用类型一样。

}

———————————————————————————————————————————

3:其他引用类型{

               除了上述说的三种之外,还包括 DateRegExpMapSet等.....

}

———————————————————————————————————————————

存储区别

1:基本数据类型和引用数据类型存储在内存中的位置不同:{

             当我们把变量赋值给一个变量时,解析器首先要确认的就是这个值是基本类型值还是引用类型值。

    1    ---        基本数据类型 存储在 栈 中 。

                前端面试:说说JavaScript中数据类型及其存储上的区别 ?_第2张图片

    a 的值为一个基本类型,是存储在栈中,将 的值赋给 b,虽然两个变量的值相等,但是两个变量保存了两个不同的内存地址。

     2   ---       引用类型 的对象存储于 堆 中。

                前端面试:说说JavaScript中数据类型及其存储上的区别 ?_第3张图片

               引用类型数据存放在堆中,每个堆内存对象都有对应的引用地址指向它,引用地址存放在栈中。obj1 是一个引用类型,在赋值操作过程汇总,实际是将堆内存对象在栈内存的引用地址复制了一份给了 obj2,实际上他们共同指向了同一个堆内存对象,所以更改obj2会对obj1产生影响。

}

你可能感兴趣的:(javascript,前端,面试)