JS中function
一、声明提前(hoist)
在js程序开始执行前,引擎会查找所有var声明的变量和function声明的函数,集中到当前作用域顶部集中创建,赋值留在原地
二、三种创建函数的方式
1、声明方式创建函数--会被声明提前
function 函数名(形参1,形参2,形参3。。。){
函数体
return 返回值
}这一段会提到当前作用域顶端
2、赋值方式
var fun=function(形参1,形参2,形参3。。。){
函数体
return 返回值
}只会把var fun提前
三、重载(overload)
相同函数名,不同形式参数列表的多个函数,在调用时,可自动根据传入实际参数的不同,选择对应的函数调用,减少函数名的数量,减轻维护负担
应用场合:一件事,可能根据传入的参数不同,执行不同的操作
js默认不支持重载,不允许多个同名函数同时存在,如果存在,最后一个函数会覆盖之前所有
解决办法:arguments对象
arguments对象:每个函数内自动创建,准备接收所有传入函数的实际参数的类数组对象
自动创建:
接收所有的实际参数:
类数组对象:长的像数组的对象
数组:下标 length 遍历
四、匿名函数
定义函数,不写名的函数
定义:如果一个函数只使用一次,不会反复使用,就不起函数名
为什么:节约内存,使用一次后,自动释放
场景:
(1)回调函数:自己定义的函数,自己不调用,而是传给其他对象或者函数,被别人调用
(2)匿名函数自调:定义函数后,立刻自己调用自己
五、作用域(scope)
全局和局部
js只有两种作用域,window的作用域和函数的作用域,for,while等均不是作用域
六、闭包
闭包,重用变量又保护变量不被篡改的编程方式,内部函数调用内部函数
步骤:
(1)、外层函数包裹内层函数和受保护的变量
(2)、外层函数将内层函数return到外部
(3)、调用外层函数,获得内层函数对象,保存在外部变量中
本文内容仅供个人学习、研究或参考使用,不构成任何形式的决策建议、专业指导或法律依据。未经授权,禁止任何单位或个人以商业售卖、虚假宣传、侵权传播等非学习研究目的使用本文内容。如需分享或转载,请保留原文来源信息,不得篡改、删减内容或侵犯相关权益。感谢您的理解与支持!