先了解一下数组的基础知识:附代码(数组属于引用类型的对象)
<!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>