Javascript中的arguments与重载介绍

 更新时间:2015年03月15日 12:10:29   投稿:junjie  
这篇文章主要介绍了Javascript中的arguments与重载介绍,本文讲解了Javscript 重载、Javascript arguments不是一个数组等内容,需要的朋友可以参考下

因为语言上的设计错误,arguments可以被当成一个数组。

复制代码 代码如下:

function zero () {
    console.log(arguments[0]);
}

也会有
复制代码 代码如下:

function zero () {
  for(var i=0;i<arguments.length;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.

相关文章

  • 效率高的Javscript字符串替换函数的benchmark

    效率高的Javscript字符串替换函数的benchmark

    这是经常使用的HTML特殊字符替换函数,即将 &、<、>、" 等函数替换成 &、<、>、"。通常的作法都是连续使用数个 replace 函数,而Clear仅使用一个 replace 就完成了替换。
    2008-08-08
  • JS生态系统加速模块解析赋能性能优化探索

    JS生态系统加速模块解析赋能性能优化探索

    这篇文章主要为大家介绍了JS生态系统加速模块解析赋能性能优化探索,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2024-01-01
  • JS控制显示隐藏兼容问题(IE6、IE7、IE8)

    JS控制显示隐藏兼容问题(IE6、IE7、IE8)

    IE6、IE7、IE8 JS控制显示隐藏兼容问题
    2010-04-04
  • JS实现带提示的星级评分效果完整实例

    JS实现带提示的星级评分效果完整实例

    这篇文章主要介绍了JS实现带提示的星级评分效果,以完整实例形式较为详细的分析了JavaScript响应鼠标事件动态变换页面元素样式的相关技巧,非常简单实用的代码,需要的朋友可以参考下
    2015-10-10
  • JavaScript中两个感叹号的作用说明

    JavaScript中两个感叹号的作用说明

    用两个感叹号的作用就在于,如果明确设置了o中flag的值(非null/undefined/0""/等值),自然test就会取跟o.flag一样的值;如果没有设置,test就会默认为false,而不是null或undefined
    2011-12-12
  • Three.js中实现Bloom效果及完整示例

    Three.js中实现Bloom效果及完整示例

    这篇文章主要为大家介绍了Three.js中实现Bloom效果及完整示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-04-04
  • JavaScript函数及其prototype详解

    JavaScript函数及其prototype详解

    这篇文章主要介绍了JavaScript函数及其prototype详解的相关资料,需要的朋友可以参考下
    2023-03-03
  • 提升JS编程效率的19个实用技巧分享

    提升JS编程效率的19个实用技巧分享

    在实际工作中,开发者常面临一些需巧妙编程解决的挑战,有时几行代码就能迎刃而解,本文整理了一系列实用代码片段,助您轻松处理URL、DOM操作、事件处理等常见问题,希望对大家有所帮助
    2023-11-11
  • 微信小程序JS加载esmap地图的实例详解

    微信小程序JS加载esmap地图的实例详解

    这篇文章主要介绍了微信小程序JS加载esmap地图的实例代码,代码简单易懂,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-09-09
  • 原生js实现下拉刷新和上拉加载更多

    原生js实现下拉刷新和上拉加载更多

    这篇文章主要为大家详细介绍了原生js实现下拉刷新和上拉加载更多,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-01-01

最新评论