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

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

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

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

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

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:那它怎么用呢~  这个问题问的好,看下面代码:

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能直接访问它,你说屌不屌,耳听为虚,眼睛为使:

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代替函数名本身。举个栗子:

function abc(a){
  if(a==1){
return 1;
  }
  return a + arguments.callee(--a);
} var mm = abc(10);
console.log(mm); // 55 //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<arg.length;i++){
      if(isNaN(arg[i]) || arg[i] == '' || arg[i] ==' '){
        sum = sum;
      }else{
        sum +=arg[i];
      }
    }
  }
  return sum;
} var num1 = sumFn(2) + sumFn(3);
console.log(num1); //5 var num2 = sumFn(2,3,4);
console.log(num2); //9 var num3 = sumFn();
console.log(num3); //0
var num4 = sumFn(1,'e',6);
console.log(num4); //7

 

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

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

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

最新文章

  1. [project euler] program 4
  2. linux c 笔记-4 工程项目阅读推荐
  3. onthink 数据库连接配置
  4. C++中typename关键字的用法
  5. python: extend (扩展) 与 append (追加) 的差别
  6. 【codevs 1200】【NOIP 2012】同余方程 拓展欧几里德求乘法逆元模板题
  7. 案例(JQuery的ajax无刷新评论)
  8. Android笔记:Socket客户端收发数据
  9. MySQL的半同步复制监控
  10. php提示Fatal error: Call to undefined function imagecreate()
  11. 基础命名空间:反射 using System.Reflection
  12. Ppoj 1014 深搜
  13. MinnowBoard MAX 硬件开发板
  14. 第一课——git的简介和基本使用
  15. ASP.NET Core SignalR
  16. CSS——margin
  17. IO流总结笔记一
  18. Java 可执行jar的manifest编写
  19. 简明log4j配置教程
  20. Android Socket

热门文章

  1. bzoj4568(合并线性基+倍增)
  2. banner
  3. 【pycharm】pycharm修改文件名快捷键
  4. djangoの2
  5. vue solt 属性浅析
  6. App性能测试之启动时间(安卓)手动+脚本
  7. Oracle数据库---用户与角色
  8. Gigabyte Z170N-WIFI 黑苹果 10.12
  9. wordcounter
  10. 使用pyenv与pyenv-virtualenv管理Python版本与虚拟环境