最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

Javascript中的arguments与重载介绍_javascript技巧

来源:动视网 责编:小采 时间:2020-11-27 21:35:46
文档

Javascript中的arguments与重载介绍_javascript技巧

Javascript中的arguments与重载介绍_javascript技巧:因为语言上的设计错误,arguments可以被当成一个数组。 代码如下: function zero () { console.log(arguments[0]); } 也会有 代码如下: function zero () { for(var i=0;i console.log(arguments[i]); } } 它
推荐度:
导读Javascript中的arguments与重载介绍_javascript技巧:因为语言上的设计错误,arguments可以被当成一个数组。 代码如下: function zero () { console.log(arguments[0]); } 也会有 代码如下: function zero () { for(var i=0;i console.log(arguments[i]); } } 它


因为语言上的设计错误,arguments可以被当成一个数组。
代码如下:
function zero () {
console.log(arguments[0]);
}

也会有
代码如下:
function zero () {
for(var i=0;i console.log(arguments[i]);
}
}

它利用了Javascript的一个事实,即Javasc

而这里的arguments变量给实参提供了一个类似数组的接口。因为这里的arguments的可变参数,我们可以利用这个有意思的东西来做一些有意思的事,比如重载。

Javscript 重载

stackvoerflow上有一个关于重载的问题,于是有了第一个答案
代码如下:
if (typeof friend === "undefined") {

} else {

}

还有一个答案则是
代码如下:
switch (arguments.length) {
case 0:
//Probably error
break;
case 1:
//Do something
break;
case 2:
default: //Fall through to handle case of more parameters
//Do something else
break;
}

只是这种方式真的不好看,难道我们的函数最后要变成这样子的?

代码如下:
function zero1 (){
console.log('arguments 1')
};
function zero2 (){
console.log('arguments 2')
};
function zero () {
if(arguments.length == 1){
zero1();
} else{
zero2();
}
}

真的一点都不好看,即使我们换个switch..case,也不好看啊。

Javascript arguments不是一个数组

arguments不是向我们看到的那样一直是一个数组,有时候可能不是。
代码如下:
function hello(){
console.log(typeof arguments);
}

这里arguments的类型是一个对象,虽然数组的类型也是一个对象,虽然我们可以将之转换为一个数组
代码如下:
var args = Array.prototype.slice.call(arguments);

但是这也表明了这不是一个数组,它拥有的只有Array的唯一一个属性,即length。除此还有

arguments.callee

Reference to the currently executing function.

arguments.caller

Reference to the function that invoked the currently executing function.

arguments.length

Reference to the number of arguments passed to the function.

文档

Javascript中的arguments与重载介绍_javascript技巧

Javascript中的arguments与重载介绍_javascript技巧:因为语言上的设计错误,arguments可以被当成一个数组。 代码如下: function zero () { console.log(arguments[0]); } 也会有 代码如下: function zero () { for(var i=0;i console.log(arguments[i]); } } 它
推荐度:
标签: js javascript 重载
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top