Javascript中的arguments与重载介绍


Posted in Javascript onMarch 15, 2015

因为语言上的设计错误,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.

Javascript 相关文章推荐
javascript高级学习笔记整理
Aug 14 Javascript
jQuery图片预加载 等比缩放实现代码
Oct 04 Javascript
IE与FF下javascript获取网页及窗口大小的区别详解
Jan 14 Javascript
浅析Bootstrap缩略图组件与警示框组件
Apr 29 Javascript
jQuery插件HighCharts绘制简单2D折线图效果示例【附demo源码】
Mar 21 jQuery
JavaScript与Java正则表达式写法的区别介绍
Aug 15 Javascript
跨域解决之JSONP和CORS的详细介绍
Nov 21 Javascript
Vue.js中provide/inject实现响应式数据更新的方法示例
Oct 16 Javascript
Vue实现点击当前元素以外的地方隐藏当前元素(实现思路)
Dec 04 Javascript
原生js实现html手机端城市列表索引选择城市
Jun 24 Javascript
JS实现公告上线滚动效果
Jan 10 Javascript
vue封装数字翻牌器
Apr 20 Vue.js
JavaScript中的闭包介绍
Mar 15 #Javascript
Javascript中的匿名函数与封装介绍
Mar 15 #Javascript
Javascript中的方法链(Method Chaining)介绍
Mar 15 #Javascript
Javascript中的apply()方法浅析
Mar 15 #Javascript
Javascript中的Callback方法浅析
Mar 15 #Javascript
Javascript中的call()方法介绍
Mar 15 #Javascript
Javascript中的高阶函数介绍
Mar 15 #Javascript
You might like
PHP 下载文件时自动添加bom头的方法实例
2014/01/10 PHP
开启PHP的伪静态模式
2015/12/31 PHP
PHP结合Mysql数据库实现留言板功能
2016/03/04 PHP
php unicode编码和字符串互转的方法
2020/08/12 PHP
win7 wamp 64位 php环境开启curl服务遇到的问题及解决方法
2018/09/16 PHP
将form表单中的元素转换成对象的方法适用表单提交
2014/05/02 Javascript
JS常用知识点整理
2017/01/21 Javascript
Vue.js实战之组件的进阶
2017/04/04 Javascript
微信小程序实现移动端滑动分页效果(ajax)
2017/06/13 Javascript
修改 bootstrap table 默认detailRow样式的实例代码
2017/07/21 Javascript
Angular 4.0学习教程之架构详解
2017/09/12 Javascript
详解Js中的模块化是如何实现的
2017/10/18 Javascript
web前端vue filter 过滤器
2018/01/12 Javascript
JavaScript 日期时间选择器一些小结
2018/04/02 Javascript
jquery实现垂直无限轮播的方法分析
2019/07/16 jQuery
Vue实现仿iPhone悬浮球的示例代码
2020/03/13 Javascript
vue实现在进行增删改操作后刷新页面
2020/08/05 Javascript
Python使用xlrd模块操作Excel数据导入的方法
2015/05/26 Python
Python爬虫抓取代理IP并检验可用性的实例
2018/05/07 Python
Python之inspect模块实现获取加载模块路径的方法
2018/10/16 Python
Python http接口自动化测试框架实现方法示例
2018/12/06 Python
运用Python的webbrowser实现定时打开特定网页
2019/02/21 Python
python实现函数极小值
2019/07/10 Python
python3 selenium自动化测试 强大的CSS定位方法
2019/08/23 Python
python pyenv多版本管理工具的使用
2019/12/23 Python
python:目标检测模型预测准确度计算方式(基于IoU)
2020/01/18 Python
CSS3弹性盒模型flex box快速入门心得(必看篇)
2016/05/24 HTML / CSS
德国运动鞋网上商店:Afew Store
2018/01/05 全球购物
丹麦优惠购物网站:PLUSSHOP
2019/03/24 全球购物
adidas瑞典官方网站:购买阿迪达斯鞋子和运动服
2019/12/11 全球购物
北京导游词
2015/02/12 职场文书
预备党员转正意见
2015/06/01 职场文书
2016父亲节感恩话语
2015/12/09 职场文书
三八红旗手先进事迹材料(2016推荐版)
2016/02/25 职场文书
高二英语教学反思
2016/03/03 职场文书
十大最强妖精系宝可梦,哲尔尼亚斯实力最强,第五被称为大力士
2022/03/18 日漫