2020828日志邹瑞
学习总结
重载(overload)
-
什么是重载?(相同函数名,不同参数列表的多个函数,在调用时,根据传入参数的不同,自动选择匹配的函数执行)
-
为什么使用重载?(减少API的数量,减轻调用者的负担)
-
什么时候使用重载?(只要一项任务,需要根据不同的参数,执行不同的操作时,就需要使用重载)
-
重载问题(JS语法不支持重载,JS中不允许多个同名函数同时存在)
-
解决重载问题(每一个函数内,都有一个arguments对象接住所有传入函数的参数值,根据arguments的元素内容或元素个数,判断执行不同的操作)
arguments(函数调用时,自动创建的,自动接收所有传入函数的参数值。arguments其实是一个类数组对象) function fn(girlFriends){
if(arguments.length0){
console.log("我没有女朋友")
}else if(arguments.length1){
console.log("我有一个女朋友")
}else if(arguments.length==2){
console.log("我有两个女朋友")
}else{
console.log("我有三个女朋友")
}
}
fn("丽丽","明明") // 我有两个女朋友
fn("丽丽") // 我有一个女朋友
参数按值传递
- 原始类型按值传递(原始类型的按值传递,在两变量之间赋值时,或将变量作为参数传入函数时,仅将原变量的值复制一个副本给对方,若修改新变量的值,不会影响原变量的值)
var a=1;
var b=a;
b=2;
console.log(a,b) //1 2 - 引用类型的传递(引用类型的传递,在两变量之间赋值时,或将变量作为参数传入函数时,将原对象的引用地址复制一份新变量,两个变量的引用地址是一样的,若使用新变量修改对象,等效于直接修改原对象)(数组对象函数)
var obj1={
name:'liming',
sex:'man'
}
var obj2=obj1;
obj2.name='lidaming';
console.log(obj1.name) //lidaming
闭包
闭包(closure)
-
什么是闭包?
-
为什么使用闭包?
全局变量
优点:可重用
缺点:易被污染
局部变量
缺点:不可重用
优点:不会被污染 -
使用闭包
var add = (function () {
var counter = 0;return function () {return counter += 1;}
})();
add(); // counter=1;
add(); // counter=2;
add(); // counter=3; -
三特点(3步)
外层函数
外层函数要返回内层函数的对象调用外层函数,用外部变量接住返回的内层函数对象,形成闭包
function fn(){
return [function fn1(){
console.log(1)
},
function fn2(){console.log(2)
},
function fn3(){console.log(3)
}
]
}
var show=fn()
show心得
感觉有点小快,有些概念性的东西有点不太清楚,但能看得懂代码,不太清楚什么时候用
- 原始类型按值传递(原始类型的按值传递,在两变量之间赋值时,或将变量作为参数传入函数时,仅将原变量的值复制一个副本给对方,若修改新变量的值,不会影响原变量的值)
近期评论