Javascript中参数和重载的引入

由于语言设计错误,参数可以被视为数组。

复制代码代码如下所示:

函数0(){

console.log(参数{ 0 });

}



将会有

复制代码代码如下所示:

函数0(){

对于(var i = 0;i < arguments.length;i++){

console.log(参数{我});

}

}



它利用一个Javascript,事实是,Javasc

这里的参数变量提供了一个类似于数组的参数接口,因为这里参数的参数可变,我们可以使用这个有趣的东西来做一些有趣的事情,比如重载。

Javscript heavy load

有对stackvoerflow重载问题,有第一个答案

复制代码代码如下所示:

如果(typeof的朋友=未定义){

{人}

}



还有一个答案是

复制代码代码如下所示:

开关(参数,长度){

案例0:

可能是错误

打破;

案例1:

做某事

打破;

案例2:

默认情况下:完成多个参数的处理

/做其他事情

打破;

}



只是这种方式真的不好。我们的功能最终会变成这样吗

复制代码代码如下所示:

功能Zero1(){

console.log('arguments 1)

};

功能的准点(){

console.log('arguments 2)

};

函数0(){

如果(arguments.length = = 1){

ZERO1();

别的{ }

ZERO2();

}

}



看起来真的一点也不好看。即使我们换了开关,情况也不太好。

Javascript参数不是数组。

参数并不是我们所看到的数组,有时也可能不是数组。

复制代码代码如下所示:

函数hello(){

console.log(形式参数);

}



这里的参数类型是一个对象,虽然数组的类型也是一个对象,但是我们可以把它转换成数组。

复制代码代码如下所示:

var args = array.prototype.slice.call(参数);



但它也表明这不是一个数组,它只有一个数组属性,即长度。

arguments.callee

引用当前执行的函数。

arguments.caller

引用调用当前执行函数的函数。

arguments.length

引用传递给函数的参数的数目。