数组的介绍与理解

140 阅读8分钟

数组

数组是什么

数组(Array)是一种可以按顺序保存数据的数据类型

可以一次性存储多个数据

声明语法:

let 数组名=[数据1,数据1,...,数据n]
//数组名称:
//1.如果是名词:请在后面加 s\es
//2.其它常见名称有arr list items studentList postListlet 数组名=['小明','小刚','小红','小丽','小米']

取值语法:

数组名[下标]let 数组名=['小明','小刚','小红','小丽','小米']
names[0]//小明
names[1]//小刚

特性

数组是按顺序保存,所以每个数据都有自己的编号

⚫ 计算机中的编号从0开始,所以小明的编号为0,小刚编号为1,以此类推

⚫ 在数组中,数据的编号也叫索引或下标

⚫ 数组可以存储任意类型的数据

操作

数组本质是数据集合 操作就是指 增加 删除 修改 查询(获取)

1.数组增加新的数据

数据.push() 方法将一个或多个元素添加到数组的末尾,并返回该数组的新长度 (重点)

主要应用场景:在数据库之前,实现数据新增操作都是使用push

arr.push(元素1,...,元素n)
​
let arr= ['red','green']
let arrlength = arr.push('blue')
​
console.log(arrlength);
conloge.log(arr);

push(你想追加的元素)

特点:

1.元素可以是一个,也可以是多个

2.它是将元素到数组的最后

返回新增元素之和的数组长度-----一般没什么卵用

arr.push(元素1,...,元素n)
​
let arr = [4,5,6,7,8,9]
        arr.push(1, 2, 3, 4)
        console.log(arr);

数组arr.unshift(新增的内容)

方法将一个或多个元素添加到数组的末尾,并返回该数组的新长度 (重点)

arr.unshift(元素1,...,元素n)
​
let arr = [4,5,6,7,8,9]
        arr.unshift(1, 2, 3, 4)
        console.log(arr);

删除数组

pop()方法(删除数组尾元素)

可以删除数组最后一个元素,并且返回当前被删除的元素

shift()方法(删除数组首元素)

可以删除数组第一个元素,并且返回当前元素

splice()方法(删除数组中间元素) 重点!!

起始索引:从0开始

删除数量:可以指定数量,如果没有指定,则删除从索引位置开始一直到最后的所有元素(如果指定的数量大于剩余的数量,不会报错)

arr。splice(1,1) //(起始索引,数量)

修改数组

数组的获取和修改需要勇敢索引

在赋值的时候,如果索引不存在,就是添加,如果索引存在就是修改

如果索引不存在,就是添加:就是在当天索引位置添加一个元素,同时这个操作会改变当前数组的长度

数组[下标]=新值
​
let arr=[]
for (let i=0;i<5;i++){
    let value=+prompt('请输入数')
    //将当前输入的值添加到数组?
    //arr.push(value)
    //将值添加到指定的索引位置
    arr[i]=value
}
console.log(arr)

获取

·数组名称[索引下标]

·索引下标从0开始

·元素:数组中存储的数据就叫元素

·下标:顺序的索引值就叫下标

·长度:数组中存储的数据数量

遍历

由于数组是有长度的,可以明确循环次数,所以一般使用for遍历

索引从0开始,到length-1

函数

为什么需要函数?

➢ 可以实现代码复用,提高开发效率

函数是什么?

function,是被设计为执行特定任务的代码块

函数可以把具有相同或相似逻辑的代码“包裹”起来,通过函数调用执行这些被“包裹”的代码逻辑,这么做的优势 是有利于精简代码方便复用。

函数的声明语法

function 函数名(){
    函数体
}
​
function sayHi(){
    document.write('hai~~')
}
​

函数使用

· 函数名命名规范

➢ 和变量命名基本一致

➢ 尽量小驼峰式命名法

➢ 前缀应该为动词

➢ 命名建议:常用动词约定

动词含义
can判断是否可执行某个动作
has判断是否含义某个值
is判断是否为某个值
get获取某个值
set设置某个值
load加载某些数据

函数的调用语法

函数名()
//函数一次声明可以多次调用,每一次函数调用函数体里面的代码会重新执行一次
sayHi()
sayHi()

我们曾经使用的 alert() , parseInt() 这种名字后面跟小括号的本质都是函数的调用

函数体 (写在大括号里面的称之为函数体)

函数体是函数的构成部分,它负责将相同或相似代码“包裹”起来,直到函数调用时函数体内的代码才

会被执行。函数的功能代码都要写在函数体当中

function sayHi(){
    document.write('hai~~') //函数体
}
sayHi()

总结

1.函数是用那个关键字声明的?

➢ function

  1. 函数不调用会执行吗?如何调用函数?

➢ 函数不调用自己不执行

➢ 调用方式: 函数名()

  1. 函数的复用代码和循环重复代码有什么不同?

➢ 循环代码写完即执行,不能很方便控制执行位置

➢ 随时调用,随时执行,可重复调用

函数传参

参数列表

➢ 传入数据列表

➢ 声明这个函数需要传入几个数据

➢ 多个数据用逗号隔开

定义参数的目的是为了提升代码灵活性 声明语法

function 函数名(参数列表){
    函数体
}
//单个参数
function getSquare(num1){
    document.write(num1*num1)
}
//多个参数
function getSquare(num1,num2){ //形参
    document.write(num1*num2)
}
getSquare(1,100)//实参

形参:声明函数时写在函数名右边小括号里的叫形参(形式上的参数)

形式参数,说明为里需要一个值

形参可以理解为是在这个函数内声明的变量(比如 num1 = 10)

形参如果不被赋值,就是undefined

实参:调用函数时写在函数名右边小括号里的叫实参(实际上的参数

实参也就是实际存在的值,它是一个真正的值

实参可以理解为是给这个变量赋值

➢ 开发中尽量保持形参和实参个数一致

➢ 我们曾经使用过的 alert('打印'), parseInt('11'), Number('11') 本质上都是函数调用的传参

特点:

1.调用前,它是一个参数的占位,说明调用方法需要传递过来

2.调用时,形参 是 方法的局部变量,只有在方法中可以使用,在方法外不能使用

函数的返回值

  1. 函数功能的单一性:函数只做业务处理,并不会对结果进行处理 ,它会将 结果返回,让调用者进行处理。
  2. 当调用某个函数,这个函数会返回一个结果出来
  3. 如果函数内部没有写return 来返回值,也会默认返回undefined
  4. 默认情况下,函数只能返回一个值(变量),如果想返回多个值,一般可以使用一个结构(对象)进行包装。
  5. 如果直接返回多个值,最终也会返回最后一个值。
  6. 函数可以没有 return,这种情况函数默认返回值为 undefined
  7. 函数内部只能出现 1 次 return,并且 return 后面代码不会再被执行,所以 return 后面的数据不要换行写
  8. 在函数体中使用 return 关键字能将内部的执行结果交给函数外部使用
  9. 一个函数中可以写多个return,但是只会运行其中一个,函数执行的时候运行到return后面的代码不再执行
  10. 不同的业务处理需要时,有可能会出现多个return,并且return一般写在一个条件判断以内

return有两种功能

  1. 返回值
  2. 立即结束当前函数

作用域

概述:

通常来说,一段程序代码中所用到的名字不总是有效和可用的,而限定这个名字的可用性的代码范围就是这个名字的作用域。作用域的使用提高了程序逻辑的局部性,增强了程序的可靠性,减少了名字冲突。

变量访问原则是什么?

➢ 作用域链:采取就近原则的方式来查找变量最终

一个变量定义但是不能使用:作用域的问题

微信图片_20220320152908.png

全局作用域(全局有效)

作用于所有代码执行的环境(整个script标签内部)或者一个独立的js文件

局部作用域(局部有效)

作用于函数内的代码环境,就是局部作用域。因为跟函数有关系,所以也称为函数作用域。

块级作用域({}内有效)

块级作用域由{}包括,if语句和for语句里面的{}等

变量作用域

如果函数内部或者块级作用域内部,变量没有声明,直接赋值也当全局变量看,但是

强烈不推荐

全局作用域 (函数外部let的变量)

全局变量可以在任何区域都可以访问和修改

局部作用域(函数内部let的变量)

局部变量只能在当前函数内部访问和修改

块级作用域({}内部的let变量)

let定义的变量,只能在块作用域里访问,不能跨块访问,也不能跨函数访问

匿名函数

具名函数

声明:function fn(){}

调用:fn()

匿名函数

function (){}

立即执行函数

  1. 场景介绍: 避免全局变量之间的污染
  2. 多个立即执行函数要用 ; 隔开,要不然会报错
//方式一
(function(){ console.log(11)})();
//方式二
(function(){consople.log(11)}());
//不需要调用,直接执行

\