数组、数组的删除添加、函数、返回值、匿名函数、回调函数

一、数组

概念:将多个元素按一定顺序排列放在一个集合中

创建数组(两种):

  • 字面量创建

  • 构造函数创建

数组的长度(length)、类型

  • 空数组 长度为0
  • 数组是object 引用类型

image-20240120124611412

如何获取数组中单个元素

  • 索引(下标):注意从0开始
  • 格式:数组名[索引值]
  • 如果没有元素,值为 undefined
  • 如果数组名为arr,第一个元素获取:arr[0],最后一个元素获取:arr[arr.length-1]

数组的删除与添加(两种)

栈操作(先进后出)

  • 添加元素:push()

  • 删除元素:pop()

  • 从最后开始添加或删除

    image-20240120111154024

队操作

遍历数组:将数组中的元素都访问一遍

image-20240120111012976

数组案例1:求一数组中的元素(number)的最大值和最小值,以及所在位置

image-20240120115106491

数组案例2:将字符串数组用A或其他符号分割,返回一个字符串

image-20240120115009845

数组案例3:反转数组

  • 注意:创建的是数组,返回的数组

image-20240120114901196

二、函数

函数概念:

  • 把具有特定功能的代码封装在一起

函数的定义(三种):

  • 函数声明: function 函数名(){函数体}
  • 函数表达式:var 函数名 = function(){函数体}
  • 构造函数定义

函数的命名规范

与变量的命名规范一样

函数的参数:

  • 形式参数(形参):在函数定义的小括号中的变量
  • 实际参数(实参):在函数调用的小括号的值

数学问题:

  • π用Math.PI
  • 1不是质数
  • 0的阶乘是1 1的阶乘是1

函数的返回值

  • 函数调用的结果就是函数的返回值 函数名()就是函数的返回值

  • 总结:

    • 如果没有return,或者return后面没有值,函数的返回值:undefined

    • 如果有return,函数的返回值:return后面的

    • 执行完return语句后,会退出,后面语句不会再执行

函数案例1:求n-m之间所有数的和

image-20240120160558096

函数案例2:求圆的面积

image-20240120160915444

函数案例3::判断一个数是否是素数(质数):

  • 是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。

image-20240120161609046

函数案例4:求n的阶乘,n是正整数

image-20240120184749291

函数的进阶

1、如果两个函数都是函数的声明,且函数名相同,那么后边的函数会覆盖前边的

image-20240120185731430

2、如果两个函数都是函数表达式,且函数名相同,函数调用的位置在哪个函数的下边就调用那个函数

image-20240120185847515

3、如果两个函数分别是函数声明和函数表达式,且函数名相同,函数表达式覆盖函数声明

image-20240120185937450

4、函数的内置对象

  • 任何一个函数都有一个内置对象arguments,本身是个数组,其元素是函数的实参

image-20240120190620693

5、匿名函数

  • 函数外面加一个 ()

    image-20240120191205316

6、回调函数

  • 函数作为参数传入–回调函数

    image-20240120191653219

7、函数作为返回值

image-20240120192400546

  • 输出结果:

image-20240120192504024