js 数组详解(一):什么是数组

本文深入讲解数组的概念,包括其在内存中的存储方式、创建及访问元素的方法,以及数组的遍历技巧。同时,探讨了数组作为引用类型对象的特性,按值传递机制,以及与null和undefined的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一. ***数组:
   什么是: 内存中连续存储多个数据的一块存储空间
      vs 变量:  内存中存储一个数据的存储空间
   为什么: ***程序=数据结构+算法
                算法: 解决问题的步骤
                数据结构: 数据在内存中的存储结构
                    好的数据结构可以极大提高程序的执行效率
   何时: 今后,只要连续存储多个相关的数据,都要用数组
   如何: 创建,访问元素
      创建: 3个场景: 
         1. 创建空数组: var 变量=[];
                                             =new Array();
             何时: 在创建数组时,暂时不知道数组中的元素内容
         2. 创建数组时,初始化数组内容: 
                                var 变量=[值1,值2,...];
                                             =new Array(值1,值2,...);
             何时: 在创建数组时,已经知道元素的内容
             强调: 每个元素之间,必须用逗号分隔
         3. 创建n个空元素的数组: var 变量=new Array(n);
             何时: 在创建数组时,仅知道元素的个数,暂时不知道元素的内容。

    访问数组中的元素: 
       下标: 数组中唯一标识每个元素存储位置的序号
              默认从0开始,连续不重复
       arr[i]: 访问arr数组中下标为i位置的元素值
          数组中每个元素的用法和普通变量完全一样。
          其实,数组也是一组变量的集合,再起一个统一的变量名

    三个不限制: 
       1. 不限制元素的数据类型
       2. 不限制元素的个数
       3. 不限制下标越界: 
              赋值: 如果下标越界,不报错!而是在指定位置自动添加新元素。——稀疏数组: 下标不连续的数组
              取值: 如果下标越界,不报错!而是返回undefined

    length属性: 记录理论上数组的元素个数
                 length永远是最大下标+1
       固定套路: 
          1. 最后一个元素: arr[arr.length-1]
          2. 倒数第n个元素: arr[arr.length-n]
          3. 在末尾追加新元素: arr[arr.length]=值
          4. 清空数组: arr.length=0;
          5. 删除末尾最后一个元素: arr.length--;
          6. 删除末尾的n个元素: arr.length-=n;

    遍历: 依次访问数组中每个元素: 
       for(var i=0;i<arr.length;i++){
           arr[i]//当前元素
       }
       何时: 今后只要对数组中每个元素执行相同的操作时

***数组是引用类型的对象: 
    数据类型: 基础类型: 值直接存储在变量本地的数据类型
                    引用类型: 值无法保存在变量本地的数据类型
                        数据实际存储在变量外的一个独立存储空间
                            同时存储多个数据的一块存储空间-对象
                            每个对象都有唯一的内存地址
                        变量中仅保存对象的地址值!
                        访问变量等效于通过地址值找到具体对象去访问
    数组就是引用类型的对象
  
***按值传递: 
    两变量间赋值,或将变量作为参数传入函数时,其实仅将原变量中值,复制一个副本给对方变量: 
       对基础类型: 修改新变量的值,不影响原变量;
       对引用类型: 仅复制对象的地址给对方,不创建新对象
                          通过新变量修改对象,等效于修改原对象

null vs undefined
  undefined: 空, 专门用于程序自动给变量初始化空值
  null: 空, 专门用于程序员主动释放对一个对象的引用
     垃圾回收: 内存中引擎会自动释放不再被任何变量引用的对象
     垃圾回收器: 在内存中自动执行的小程序
                        自动释放不被任何变量引用的对象
     好的习惯: 只要一个对象不再使用,都要主动将变量置为null

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值