JavaScript-->基础类型和引用类型的区别

先了解一下数组的基础知识:附代码(数组属于引用类型的对象)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    <script type="text/javascript">
        // 数组:存储一组变量的内存中连续存储多个数据的存储空间
        // 使用数组的好处:连续存储的多个数据便于维护和查询
        // 数组的创建:
        // 1.创建空数组:
        var arr = [];
        var arr1 = new Array();
        // 2.创建一个已知数据个数的空数组
        var arr2 = new Array(29);
        // 3.创建数组同时赋值
        var arr = ["王五","李四","张三"];
        var arr1 =new Array("王五","李四","张三");
        // 通过下标访问数组,若无值就显示undefined
        console.log(arr[0],arr[1],arr[2],arr[3]);
        // 特征:
        // 1.不限制元素的存储数据类型
        var array = ["jack",true,3.14];
        // 2.不限制下标的越界
        array[4] = 80;//自动在制定位置新建元素保存元素
        console.log(array);
        console.log(array[3]);
        // 3.不限制数组的元素个数
        array[10] = "marry";
        console.log(array);
        // 4.数组的.length属性:记录了理论上的元素个数 永远是最后一个元素的下标+1
        console.log(array.length);//10+1
        // 5.获取数组的最后一个元素 array.length-1
        console.log(array[array.length-1]);
        // 6.在数据末尾追加新内容 array.length
        array[array.length] = "haha";
        console.log(array);
        // 删掉数组中的某个元素
        array[1]="";
        // 删掉数组的最后一个元素
        array.length--;
        // 删掉数组末尾的n个元素
        array.length = array.length-n;
    </script>
</body>
</html>

 

基础类型:number string boolean undefined null

数据直接保存在变量本地的数据类型
数据进行传值时,是将原变量的值复制一份传递给新变量,新变量的值发生改变时,原变量的值不会发生变化
引用类型:
1.数据无法直接保存在变量本地的数据类型,变量只允许保存一个值
2.引用类型的对象会在window对象之外创建一个独立的存储空间,并给一 个唯一的地址,变量中保存的就只这个存储空间的地址——称为"引用"
3.数据进行传值时,传递的是地址,若新变量修改,则数据也会改变

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>数组是引用类型的对象</title>
</head>
<body>
    <script type="text/javascript">
        // 基础类型进行传值时 新变量的改变并不会影响原变量
        var a =10;
        var b=a;
        b++;
        console.log(a);//值为10
        console.log(b);//值为11
        // 引用类型进行传值时,新变量的改变会直接改变原变量的值,因为对象之间传递的时存储数据的地址
        var arr = [1,2,3,4,5];
        var arr1 =arr;
        arr1.length--;
        console.log(String(arr));//1,2,3,4
        arr1 = null;//当赋值为空时,表示此变量不再引用这个数组
        console.log(String(arr1));
        
        // undefined js使用 定义变量为赋值时,变量的初值为undefined
        // null 程序员使用,手动清楚一个变量的内容
            // 基础类型:直接清空变量内容
            // 引用类型:表示变量不再引用对象
        // 何时清空一个变量
        // 垃圾回收:js引擎会自动释放不再被任何变量引用的对象
        // 垃圾回收器:专门回收不再使用的对象的小程序
            // 1.记录每一个对象,被几个变量引用着,每多一个变量引用,计数器+1
            //     当一个变量赋值null时,计数器-1
            // 2.当计数器为0时,表示对象不再被任何变量引用,对象就被回收
            // 3.使用一个较大的对象时 主动清空
    </script>
</body>
</html>

 

posted @ 2019-07-25 21:25  你可以这样称呼我  阅读(172)  评论(0编辑  收藏  举报