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 相关文章推荐
window resize和scroll事件的基本优化思路
Apr 29 Javascript
JavaScript弹出窗口方法汇总
Aug 12 Javascript
node.js中的fs.utimes方法使用说明
Dec 15 Javascript
JavaScript中用于生成随机数的Math.random()方法
Jun 15 Javascript
Vue.js每天必学之过渡与动画
Sep 06 Javascript
基于jQuery代码实现圆形菜单展开收缩效果
Feb 13 Javascript
js代码延迟一定时间后执行一个函数的实例
Feb 15 Javascript
JS实现中国公民身份证号码有效性验证
Feb 20 Javascript
Vue表单验证插件的制作过程
Apr 01 Javascript
原生JS实现$.param() 函数的方法
Aug 10 Javascript
layui-table对返回的数据进行转变显示的实例
Sep 04 Javascript
Vue自动构建发布脚本的方法示例
Jul 24 Javascript
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将session放入memcached的设置方法
2014/02/14 PHP
js 中{},[]中括号,大括号使用详解
2011/05/12 Javascript
javascript检测浏览器flash版本的实现代码
2011/12/06 Javascript
用innerhtml提高页面打开速度的方法
2013/08/02 Javascript
按钮接受回车事件的三种实现方法
2014/06/06 Javascript
javascript正则表达式基础知识入门
2015/04/20 Javascript
Node.js编程中客户端Session的使用详解
2015/06/23 Javascript
深入理解JavaScript函数参数(推荐)
2016/07/26 Javascript
微信小程序技巧之show内容展示,上传文件编码问题
2017/01/23 Javascript
canvas压缩图片转换成base64格式输出文件流
2017/03/09 Javascript
利用vue.js实现被选中状态的改变方法
2018/02/08 Javascript
babel之配置文件.babelrc入门详解
2018/02/22 Javascript
浅谈Angular 的变化检测的方法
2018/03/01 Javascript
为jquery的ajax请求添加超时timeout时间的操作方法
2018/09/04 jQuery
深入解析ES6中的promise
2018/11/08 Javascript
KMP算法精解及其Python版的代码示例
2016/06/01 Python
基于python的Tkinter编写登陆注册界面
2017/06/30 Python
python去重,一个由dict组成的list的去重示例
2019/01/21 Python
SpringBoot实现登录注册常见问题解决方案
2020/03/04 Python
python判断正负数方式
2020/06/03 Python
浅析pandas随机排列与随机抽样
2021/01/22 Python
美国椅子和沙发制造商:La-Z-Boy
2020/10/25 全球购物
国际政治个人自荐信范文
2013/11/26 职场文书
秋季运动会表扬稿
2014/01/16 职场文书
大学生素质拓展活动方案
2014/02/11 职场文书
先进集体事迹材料
2014/02/17 职场文书
美丽家庭事迹材料
2014/05/03 职场文书
消防安全承诺书
2014/05/22 职场文书
党的群众路线教育实践活动个人整改落实情况汇报
2014/10/28 职场文书
幼儿园园长新年寄语2015
2014/12/08 职场文书
交通安全宣传标语(100条)
2019/08/22 职场文书
nginx location优先级的深入讲解
2021/03/31 Servers
CSS3 天气图标动画效果
2021/04/06 HTML / CSS
redis实现共同好友的思路详解
2021/05/26 Redis
Python中的xlrd模块使用整理
2021/06/15 Python
MySQL子查询中order by不生效问题的解决方法
2021/08/02 MySQL