博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
arguments对象的实例使用
阅读量:6994 次
发布时间:2019-06-27

本文共 1838 字,大约阅读时间需要 6 分钟。

新年第一记,从这里开始,先来个简单的!去年的知识梳理留下了很多尾巴,原因有很多(知识储量不足,懒了,项目多...) lg:都是借口~   好吧,我承认,这都是借口,今年一定把尾巴清干净!

下面要写的是知识梳理的第一个案例:

  1. 写一个求和的方法sumFn,不管传递的参数有什么,都能将最终的和算出来,并且返回给函数外部使用。(要求:一个参数都不传默认结果为0,对于传递的非正常数字的参数不与累加操作);

这个案例主要要考察的知识点是 arguments 参数,来给个特写,什么意思呢?

arguments 参数是一个比较特殊的对象,是当前函数的一个内置属性,它非常想Array,但却不是Array  lg:说的什么,还是不懂~  额,好吧,例子胜过一切雄辩,咱们举几个栗子来看看:

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
function
abc(a,b,c){
       
//看看arguments是什么
    
console.log(arguments);
}
 
abc(1,2,3)  ; 
//[1,2,3] 这不是数组吗
 
 
function
abc(a,b,c){
       
//看看arguments是什么类型的
    
console.log(
typeof
arguments)  
}
 
abc(1,2,3)  ; 
//object   这是对象,不是数组

 

看看,是不是有点意思,似数组非数组  lg:那它怎么用呢~  这个问题问的好,看下面代码:

1
2
3
4
5
6
7
8
9
function
abc(a,b,c){
    
var
len = arguments.length;
    
console.log(len);
    
console.log(arguments[0]);
    
console.log(arguments[1]);
}
abc(1,2,3);
// 3 , 1 , 2
 
//长度为3,第一个值为1,第二个值为2...  看来是具有对应关系的

lg:就只有这2下子?一点都不好玩~   呵,你还急了,当然不只这两下子啊,它有一个非常实用的功能,就是在函数中,无需明确指出参数名,arguments能直接访问它,你说屌不屌,耳听为虚,眼睛为使:

1
2
3
4
5
6
7
8
function
abc(){
    
var
a = arguments;
    
var
num = arguments[0] + arguments[1] + arguments[2];
//这里可以用循环,为方便查看,拆开了写,你懂的
    
console.log(num);
}
abc(1,2,3);
// 6  说明可以获取
 
//正常来说,函数没有参数,应该是要报错的,如果能成功运行,说明它具备这个神级

lg:果然了得啊,那它还有没有其他的吊炸天技能呢? 当然有啦!arguments对象中有一个非常有用的属性:callee。arguments.callee返回此arguments对象所在的当前函数引用。在使用函数递归调用时推荐使用arguments.callee代替函数名本身。举个栗子:

1
2
3
4
5
6
7
8
9
function
abc(a){
  
if
(a==1){
    
console.log(arguments.callee);
//直接输出当前函数
    
return
1;
  }
  
return
a + arguments.callee(--a);
}
         
var
mm = abc(10);
console.log(mm);
// 55<br><br>//arguments.callee(--a) 执行了递归调用,这样就完成了1~9的累加

看到这里,上面说的例子应该就不难写了吧,来跟着我左手右手一个慢动作:

 

function sumFn(){   var arg = arguments;   var sum = 0;  if(arg == '' || arg == ' ' || arg ==null){    sum = 0;  }else{    for(var i=0;i

 

到这里,不知道你对这个例子理解了没有,  lg: 这么好的东西,兼容性怎么样呢?  哈哈,这么吊炸天的东西,兼容性还特别的好,你说气不气人,经测试,支持所有浏览器!

好了,它是对象,它也有对象,但是我还没有对象,呜呜呜~~~,我要去找对象去了!

行文仓促!有理解的不正确的或者是遗漏的东西,万望批评指正!不胜感激!

出处:

转载地址:http://vgivl.baihongyu.com/

你可能感兴趣的文章
微信小程序开发简易计算器改进版
查看>>
混合背包问题
查看>>
Android studio树形
查看>>
hihoCoder1043
查看>>
【康托展开】
查看>>
6.19 docker (二)实战WordPresser
查看>>
关于mysql的初步学习 (三)
查看>>
html常用标签6-表单标签
查看>>
浅谈Java抽象类
查看>>
Codeforces Round #417 (Div. 2)
查看>>
vue-router history模式
查看>>
Python异步IO
查看>>
SQL 死锁进程查询
查看>>
linux下的时区修改
查看>>
Python模块常用命令
查看>>
js javascript 容错处理代码屏蔽js错误
查看>>
由nodejs+nginx搭配而成的高并发服务器
查看>>
网站安全编程 网站要如何写才安全 .net程序员的误区 asp.net安全编程
查看>>
python实现播放音频和录音功能示例代码
查看>>
3406: [Usaco2009 Oct]Invasion of the Milkweed 乳草的入侵
查看>>