数组、函数、对象知识点回顾

210 阅读4分钟

 一、数组

(一)、数组原理

1.数组是什么? : 是一种复杂数据类型

2.数组作用? : 可以在变量中 ‘存储多个数据’

3.数组内存原理? : 数组内存由三个部分组成(数组三要素)

(1)元素: 数组中的数据

(2)下标: 元素的位置

  (3) 长度: 元素的数量

4、关于数组简单使用

(1).数组声明:  let  数组名 = [元素1,元素2,元素3,.......]

(2).数组取值 数组名[下标]

(3 ).数组长度 数组名.length

5、数组遍历语法

   5.1.数组语法

            (1).数组声明:  let  数组名 = [元素1,元素2,元素3,.......]

            (2).数组取值    数组名[下标]

            (3).数组长度    数组名.length

        5.2.数组遍历: 依次读取数组每一个元素值

            固定格式的for循环:  

                for(let i = 0;i < arr.length ;i++){

                    arr[i]

                }

( 二)、数组操作

1.查询与修改

    1.1声明数组  let 数组名 = [元素1,元素2,元素3,....]

    1.2.数组取值(查)    数组名[下标]

    1.3.数组赋值(改)    数组名[下标] = 值

2、数组新增元素

    2.1数组名.push(元素)  : 一个或多个元素,添加到末尾

    2.2数组名.unshift(元素)  : 一个或多个元素,添加到末尾

 3、数组删除元素

    3.1数组名.pop(元素)  : 删除末尾元素

    3.2数组名.shift(元素)  : 删除开头元素

4、数组删除splice

    4.1arr.splice(start,deleteCount)

            第一个值: 起实位置。 从0开始

            第二个值: 要删除的数量

            * 如果没有指定数量,则会删除从起始位置到后面所有元素 

二、函数

(一)、有关函数介绍

1.函数语法

 1.1声明函数 : 是一个存储过程,此时不会执行函数体代码  

            function 函数名(){

                函数体代码: 需要存储的一段代码

     }

   1.2调用函数 : 执行函数体代码

            函数名()

 2.函数传参

     2.1函数语法  : 函数是一种用于存储代码块的复杂数据类型

            * 作用:解决代码复用问题

     2.2声明函数 : 声明函数只是把代码存起来,不会执行函数体  

            function 函数名(){

                函数体代码: 需要存储的一段代码

            }

    2.3调用函数 : 执行函数体代码

            函数名()

    2.4函数参数 : 调用者 传递数据 函数

            2.4.1 传:调用者

                函数名(实际参数)

           2.4.2收:函数

                function 函数名(形式参数){   //函数体代码 }

           2.4.3函数传参本质: 实参给形参赋值的过程

                (1)函数传参是按照传入顺序一一赋值

                (2)函数每一次调用传参过程都是独立的,互不影响

                (3)函数 形参数量 和 实参数量 可以不一致的

 3.函数默认参数

       3.1.函数默认参数,我们自己在开发中使用不多。(了解后面很多js框架函数默认参数底层原理)

        3.2函数默认参数 使用 逻辑运算符短路运算(逻辑中断)

             3.2.1短路运算: 左边式子就可以决定结果,右边式子不执行

                && : 一假则假

                || : 一真则真

                 ! : 取反(没有短路运算,因为只有一个式子)

             3.2.2 短路规则:

                && : 找假。  左边式子值可以转成false,则无条件返回左边式子的值,右边不执行。 反之无条件返回右边式子的值。

                || : 找真。 左边式子值可以转成true,则无条件返回左边式子的值,右边不执行。 反之无条件返回右边式子的值。

4.函数返回值: 函数 传递数据 给调用者

       4.1 传 : 函数

                function 函数名(){ return 值 }

        4.2 收 :  调用者

                let 变量名 = 函数名()

        4.3 注意点

                (1)函数return关键字后面的代码不会执行的

                    * 只要有return关键字,函数体立即结束执行。

                (2)如果函数没有return,则默认返回值是undefined

5.锻炼函数所有语法外,还加强逻辑思维的锻炼(加强案例)

      5.1本案例所采用的思想称之为:开关思想

      5.2开关思想用于解决此类问题 : 判断数组中是否所有元素满足条件

      5.3开关思想主要分为三个流程

               (1)声明一个开关变量(一般默认为true)

               (2)遍历数组,判断每一个元素是否满足条件,遇到不满足修改开关变量为false

                  * 遇到满足的不用修改,因为默认就是true

                (3)返回开关变量值

​ (二)、函数作用域

 1.js变量作用域: 变量可以使用的区域

            * 作用:避免变量污染(变量名相同导致代码冲突)

 2.js三种作用域

            2.1 全局作用域(全局变量)  : 在函数外面let的变量

            2.2 局部作用域(局部变量) :   在函数里面let的变量

            2.3 快级作用域(快级变量) :   在分支或循环大括号中let的变量

3.作用域链

       3.1作用域链: 默认情况下,代码处于全局作用域(0级链),当声明一个函数之后就会开辟一个局部作用域(1级), 而函数里面又可以声明一个函数,又会形成新的作用域(2级),以此类推形成的结构称之为作用域链

       3.2变量访问规则: 就近原则

       当你在一个作用域访问变量的之后,首先会看当前作用域有没有声明。如果有则访问。 没有则往上级作用域查找,有没有声明。有则访问,没有则继续往上。直到作用域最顶端0级,如果还没有找到。则程序报错  xxx is not defined

4.匿名函数

        4.1匿名函数 : 没有函数名的函数

        4.2匿名函数作用 : 开辟局部作用域,避免全局变量污染

        4.3小细节: 匿名函数自执行的时候,上一个语句分号不能省略

5.了解高阶函

    5.1任何数据类型共同点(值类型,引用类型)

            * 都有变量赋值特点

    5.2引用类型特点

            * 函数: 函数名()

            * 数组: 数组名[下标]

            * 对象: 对象名.属性名

 三、对象

 (一)、对象概念

  1.对象是什么 : 对象是一种复杂数据类型

   2.对象作用 :以键值对方式存储多个数据

   3.对象与数组异同点

            相同点:都是复杂数据类型,都可以存储多个数据

            不同点: 存储方式不同

                数组: 有序存储

                对象: 无序存储(键值对) ​

 (二)、对象语法

 1.声明对象  

       let 对象名 = {

                属性名:属性值,

                属性名:属性值,

            }

  2.取值语法

            对象名.属性名

 3.细节: 对象中的属性值是什么数据类型, 取出来的时候就可以使用这个类型的所有语法

            如,对象的属性值是 数组, 则可以: 对象名.属性名[下标]

            如,对象的属性值是 函数, 则可以: 对象名.属性名()

(三)、对象操作

(1)查询对象属性

      1.查询对象特点

            1.1 如果属性名存在,则获取属性值

            1.2 如果属性名不存在,则获取undefined

       2.查询对象属性两种语法

            点语法       obj.属性名

            []语法       obj['属性名']    obj[ 变量名 ]

      3.总结 :  对象取值优先使用点语法, 在需要解析变量的时候使用 [] 语法

 (2)新增与修改属性

        1.查询属性

            点语法      对象名.属性名

            []语法      obj['属性名']    obj[ 变量名 ]

        2.修改属性

            对象名.属性名   = 值

            对象名['属性名'] = 值

        3.新增属性

            (1)如果已经存在的属性赋值,则是修改

            (2)如果不存在的属性赋值,则是新增

        4.删除对象属性

            delete 对象性.属性名

 (四)、对象遍历

 1.遍历数组: 固定for循环

        for(let i = 0;i< arr.length;i++){   arr[i] }

 2.遍历对象 : 特殊的for-in循环  (专用于遍历对象)

        for(let key in 对象名){ 对象名[key] }

(五) 、内置对象

     1.内置对象 : 由js作者提前写好的对象,我们直接拿来使用即可

          * 说人话 : 相当于手机内置应用,如短信、电话。 一买来就自带的,直接使用

     2. Math:数学对象

(六)、值类型和应用类型

 1.值类型(简单数据类型) :  string  number boolean undefined null

        * 栈中存储数据,赋值拷贝的也是数据,修改拷贝后的数据对原数据‘没有影响’

2.引用类型(复杂数据类型) : array function object

        * 栈中存储地址,数据存在堆中。赋值拷贝的是地址,修改拷贝后的数据对元素‘有影响’

\