自定义函数
创建函数的方式
【声明方式】
function 函数名(形参列表){函数体}
【直接量方式】
var 函数名=function(形参列表){函数体}
函数的返回值return
return的本意是退出函数,如果后面跟着一个数据,则会将数据返回到函数作用域的外部,但是return只负责返回不负责保存,因此需要用变量借助函数的返回值return
【注】就算省略return,函数默认的return也是undefined
作用域
全局作用域
全局变量和全局函数在页面的任何一个位置都可以使用
函数作用域
局部变量和局部函数只能在函数调用时,内部可用;
***函数内部的变量都会在函数执行完毕后自动释放
变量的使用规则
优先使用局部的,局部没有找全局,全局没有就报错
全局污染
在函数中对全局未声明的变量赋值会造成全局污染,降低网页性能
声明提前
原理
在程序执行之前,会将var声明的变量(轻)和function声明的函数
(重)提前到当前作用域的顶部,但是赋值留在原地
【注】“声明方式”创建的函数会完整的提前;“直接量方式”创建的函数只有变量名部分会提前,赋值留在原地
重载
相同的函数名,根据传入的实参不同,自动选择对应的函数去执行,但JS不支持,重复的函数名会覆盖前面的
JS变相实现重载的方法:arguments对象
在【函数内部】自带一个arguments的对象(类数组对象),不需要创建
**作用:**就算没有任何形参,也可以接住所有的实参
用法
- 通过下标去获取传入的某一个实参:arguments[i]
- 通过length获取到底传入了几个实参
数组的基础
创建数组
//第一种方式:直接量方式
var arr=[元素1,元素2,...]
//第二种方式:构造函数方式
var arr=new Array(元素1,元素2,...)
获取数组中的元素
数组名[i]
添加/替换元素
数组名[i]=新数据
数组的三大不限制
- 不限制元素的类型
- 不限制元素的长度
- 不限制下标越界
- 获取元素时下标越界,则得到的是undefined
- 添加元素时下标越界,则会得到一个稀疏数组,中间有很有undefined
数组的唯一属性length
用途
- 向末尾添加元素:arr[arr.length]=新数据
- 获取数组的倒数第n个元素:arr[arr.length-n]
- 缩容:删除倒数n个元素:arr.length-=n
遍历数组
for(var i=0;i<arr.length;i++){
arr[i]
}