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.

相关文章

  • 基于Unit PNG Fix.js有时候在ie6下不正常的解决办法

    基于Unit PNG Fix.js有时候在ie6下不正常的解决办法

    本篇文章是对Unit PNG Fix.js有时候在ie6下不正常的解决办法进行了详细的分析介绍,需要的朋友参考下
    2013-06-06
  • JS工厂模式开发实践案例分析

    JS工厂模式开发实践案例分析

    这篇文章主要介绍了JS工厂模式开发,结合具体实践案例形式分析了基于javascript工厂模式实现的轮播功能相关操作技巧,需要的朋友可以参考下
    2019-10-10
  • JavaScript获得页面base标签中url的方法

    JavaScript获得页面base标签中url的方法

    这篇文章主要介绍了JavaScript获得页面base标签中url的方法,涉及javascript中元素的获取及href属性的使用技巧,需要的朋友可以参考下
    2015-04-04
  • JS判断是否手机或pad访问实现方法

    JS判断是否手机或pad访问实现方法

    这篇文章主要介绍了JS判断是否手机或pad访问实现方法的相关资料,需要的朋友可以参考下
    2016-12-12
  • js实现的简洁网页滑动tab菜单效果代码

    js实现的简洁网页滑动tab菜单效果代码

    这篇文章主要介绍了js实现的简洁网页滑动tab菜单效果代码,可实现简单的鼠标滑过tab标签切换的功能,非常简单实用,需要的朋友可以参考下
    2015-08-08
  • JS实现下拉菜单赋值到文本框的方法

    JS实现下拉菜单赋值到文本框的方法

    这篇文章主要介绍了JS下拉菜单赋值到文本框的方法,涉及javascript页面元素的选择与赋值的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-08-08
  • 深入解析ECMAScript 2023 中的新数组方法

    深入解析ECMAScript 2023 中的新数组方法

    ECMAScript 是一种标准化的脚本语言,它是 JavaScript 的规范。ECMAScript 2023 是 JavaScript 编程语言的更新,旨在带来改进并使 JavaScript 程序可预测和可维护,这篇文章主要介绍了探索 ECMAScript 2023 中的新数组方法,需要的朋友可以参考下
    2023-12-12
  • 微信小程序实现二维码生成器

    微信小程序实现二维码生成器

    这篇文章主要为大家详细介绍了如何通过微信小程序开发一个简单的二维码生成器,文中的示例代码讲解详细,感兴趣的小伙伴可以和小编一起学习一下
    2023-01-01
  • Javascript实现元素选择器功能

    Javascript实现元素选择器功能

    这篇文章主要为大家详细介绍了Javascript实现元素选择器功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-07-07
  • JS+CSS绘制棋盘格的示例代码

    JS+CSS绘制棋盘格的示例代码

    在这篇文章中,将为大家展示如何使用css Flex-box和一些JavaScript来设计棋盘。文中的示例代码讲解详细,感兴趣的可以了解一下
    2022-05-05

最新评论