2023-5-8(第四天)

69 阅读2分钟

自定义函数

创建函数的方式

【声明方式】
function 函数名(形参列表){函数体}
【直接量方式】
var 函数名=function(形参列表){函数体}

函数的返回值return

​ return的本意是退出函数,如果后面跟着一个数据,则会将数据返回到函数作用域的外部,但是return只负责返回不负责保存,因此需要用变量借助函数的返回值return

【注】就算省略return,函数默认的return也是undefined

作用域

全局作用域

​ 全局变量和全局函数在页面的任何一个位置都可以使用

函数作用域

​ 局部变量和局部函数只能在函数调用时,内部可用;

​ ***函数内部的变量都会在函数执行完毕后自动释放

变量的使用规则

​ 优先使用局部的,局部没有找全局,全局没有就报错

全局污染

​ 在函数中对全局未声明的变量赋值会造成全局污染,降低网页性能

声明提前

原理

​ 在程序执行之前,会将var声明的变量(轻)和function声明的函数

(重)提前到当前作用域的顶部,但是赋值留在原地

【注】“声明方式”创建的函数会完整的提前;“直接量方式”创建的函数只有变量名部分会提前,赋值留在原地

重载

​ 相同的函数名,根据传入的实参不同,自动选择对应的函数去执行,但JS不支持,重复的函数名会覆盖前面的

JS变相实现重载的方法:arguments对象

​ 在【函数内部】自带一个arguments的对象(类数组对象),不需要创建

**作用:**就算没有任何形参,也可以接住所有的实参

用法

  1. 通过下标去获取传入的某一个实参:arguments[i]
  2. 通过length获取到底传入了几个实参

数组的基础

创建数组

//第一种方式:直接量方式
var arr=[元素1,元素2,...]

//第二种方式:构造函数方式
var arr=new Array(元素1,元素2,...)

获取数组中的元素

​ 数组名[i]

添加/替换元素

​ 数组名[i]=新数据

数组的三大不限制

  1. 不限制元素的类型
  2. 不限制元素的长度
  3. 不限制下标越界
    • 获取元素时下标越界,则得到的是undefined
    • 添加元素时下标越界,则会得到一个稀疏数组,中间有很有undefined

数组的唯一属性length

用途
  1. 向末尾添加元素:arr[arr.length]=新数据
  2. 获取数组的倒数第n个元素:arr[arr.length-n]
  3. 缩容:删除倒数n个元素:arr.length-=n

遍历数组

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