下面要写的是知识梳理的一个案例:
- 写一个求和的方法sumFn,不管传递的参数有什么,都能将最终的和算出来,并且返回给函数外部使用。(要求:一个参数都不传默认结果为0,对于传递的非正常数字的参数不与累加操作);
这个案例主要要考察的知识点是
arguments
参数,来给个特写,什么意思呢?
arguments
参数是一个比较特殊的对象,是当前函数的一个内置属性,它非常想Array,但却不是Array
lg:说的什么,还是不懂~
额,好吧,例子胜过一切雄辩,咱们举几个栗子来看看:
看看,是不是有点意思,似数组非数组
lg:那它怎么用呢~
这个问题问的好,看下面代码:
lg:就只有这2下子?一点都不好玩~
呵,你还急了,当然不只这两下子啊,它有一个非常实用的功能,就是在函数中,无需明确指出参数名,arguments能直接访问它,你说屌不屌,耳听为虚,眼睛为使:
lg:果然了得啊,那它还有没有其他的吊炸天技能呢?
当然有啦!arguments对象中有一个非常有用的属性:callee。arguments.callee返回此arguments对象所在的当前函数引用。在使用函数递归调用时推荐使用arguments.callee代替函数名本身。举个栗子:
看到这里,上面说的例子应该就不难写了吧,来跟着我左手右手一个慢动作:
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: 这么好的东西,兼容性怎么样呢?
哈哈,这么吊炸天的东西,兼容性还特别的好,你说气不气人,经测试,支持所有浏览器!
好了,它是对象,它也有对象,但是我还没有对象,呜呜呜~~~,我要去找对象去了!
行文仓促!有理解的不正确的或者是遗漏的东西,万望批评指正!不胜感激!