Open JesseZhao1990 opened 6 years ago
一个函数的length代表了这个函数定义的参数的个数,和arguments.length的区别是arguments.length代表了函数执行时实际传入的参数的个数
当调用一个闭包函数N次的时候,事实上是产生了N个闭包,这些闭包之间互相隔离。思考一下下面会输出什么?
function test(a){
var b = a;
return function(){
console.log(b);
}
}
var t1 = test(1);
var t2 = test(2);
var t3 = test(3);
t1();
t2();
t3();
t1();
什么叫函数的重载
简单的讲,函数重载就是具有相同的函数名,根据参数的不同干不同的事情的函数,
在js中如何实现函数的重载
在Java中,通过方法签名来唯一确定一个方法。所谓方法签名包括:方法名、参数类型和参数顺序、参数个数这几个要素。所以,如果两个方法名称相同,但是只要其他要素(例如参数类型、参数个数)不同,编译器就会认为是不同方法。从而可以存在同名的不同方法,导致了重载现象 但是在js中,方法完全靠js名来确定,不考虑参数类型和参数顺序,所以如果定义多个同名函数,后定义的会覆盖前边定义的。那是不是js没办法做到函数的重载呢?非也。。最起码我们能做到形式上重载,下面列举几个方法
1.根据传的参数的个数,动态执行不同的代码块。
2.利用闭包