javascript模拟函数的重载
arguments对象表示该函数接受的参数数组
例如:SayHi(1,2,3,4),则该函数的arguments数组为[1,2,3,4]。
模拟重载
function add(){
if(arguments.length==1)
{
alert(argument[0]+5);
}
elseif(arguments.length==2)
{
alert(arguments[0]+arguments[1]);
}
}
add(1); //输出6
add(1,2); //输出3
闭包
概念:
函数可以使用函数之外定义的变量。
使用方式:
1. 调用函数上级对象定义的变量(如全局变量):直接调用(简单闭包);
2. 调用函数同级或下级对象中定义的变量:返回函数调用(复杂闭包)。
例如:
function A()
{
this.b=0; //可以被外部调用,以属性方式
vara; //不可被外部调用,可被内部调用
functionprinta(){
alert(a);
}
return printa; //返回函数调用
}
可能引发的问题:
1. 内存泄露,即出现局部变量引用不为零的情况;
2. 上下文的引用容易产生混乱,如this的调用。