javascript 小实例,求和的方法sumFn
新年第一记,从这里开始,先来个简单的!去年的知识梳理留下了很多尾巴,原因有很多(知识储量不足,懒了,项目多...) lg:都是借口~ 好吧,我承认,这都是借口,今年一定把尾巴清干净!
下面要写的是知识梳理的第一个案例:
- 写一个求和的方法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: 这么好的东西,兼容性怎么样呢? 哈哈,这么吊炸天的东西,兼容性还特别的好,你说气不气人,经测试,支持所有浏览器!
好了,它是对象,它也有对象,但是我还没有对象,呜呜呜~~~,我要去找对象去了!
行文仓促!有理解的不正确的或者是遗漏的东西,万望批评指正!不胜感激!
6K)L)]~VIZK.gif)
6K)L)]~VIZK.gif)
javascript 小实例,求和的方法sumFn的更多相关文章
- javascript小实例,多种方法实现数组去重问题
废话不多说,直接拿干货! 先说说这个实例的要求:写一个方法实现数组的去重.(要求:执行方法,传递一个数组,返回去重后的新数组,原数组不变,实现过程中只能用一层循环,双层嵌套循环也可写,只做参考): 先 ...
- JavaScript小实例:拖拽应用(二)
经常在网站别人的网站的注册页中看到一个拖拽验证的效果,就是它的验证码刚开始不出来,而是有一个拖拽的条,你必须将这个拖拽条拖到底,验证码才出来,说了感觉跟没说一样,你还是不理解,好吧,我给个图你看看: ...
- javascript小实例,拖拽应用(一)
前面我们将了一下拖拽的基本思想,理论是有了,那实践呢,可以运用到什么地方呢?下面就给大家带来一个用拖拽思想写的一个小实例,供大家参考,大致效果看下图: 就是这样一个简单的一个拖拽条,你可以把它理解为滚 ...
- JavaScript 小实例 - 表单输入内容检测,对页面的增删改
JavaScript 小实例 - 表单输入内容检测,对页面的增删改 效果体验地址:https://xpwi.github.io/js/JavaScript01/jsForm.html 功能: 1.向页 ...
- OC小实例关于init 方法不小心的错误
OC小实例关于init 方法不小心的错误 正视遇到的每一个错误 在一个遥控器类操控小车玩具的小实例项目中,我采用组合的方式,将遥控器拥有小汽车对象(has a)关系,而不是继承(is a)关系. 想 ...
- javascript小实例,编写一个方法,实现从n-m个数中随机选出一个整数
别怪我是一个闷葫芦,没那么多花哨的语言,废话不多说,先说说小实例的要求: 编写一个方法,实现从n-m个数中随机选出一个整数,要求:传递的参数不足两个或者不是有效数字,返回[0-1]之间的随机数,需要解 ...
- OC小实例关于init方法不小心的错误
*:first-child { margin-top: 0 !important; } body > *:last-child { margin-bottom: 0 !important; } ...
- javascript小实例,实现99乘法表及隔行变色
人生短暂,废话不多说,直奔主题! 这个小实例的要求: 实现在页面中输出99乘法表.(要求:以每三行为一组,实现隔行变色(颜色为白,红,黄(也可自己定义)),鼠标滑过每一行,行背景颜色变为蓝色,鼠标离开 ...
- javascript小实例,PC网页里的拖拽
几年前,我参与设计开发一个房产网的项目,我负责前端工作,由于项目经理要求比较高,参考了很多房产类网站比较优秀的功能,想把别人比较优秀的设计和想法集合到一起,那时的设计稿和功能实现,简直就是改了又改,今 ...
随机推荐
- getElementById和$()获取值一点注意事项
<script type="text/javascript"> window.onload = function () { var obj = document.get ...
- 20145232韩文浩《网络对抗》逆向及BOF基础实践
实践目标 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何用户输入的字符串. 该程序同时包含另一个代码片段,getShe ...
- JS入门经典第二章总结
document:在对网页编写脚本时,我们使用document对象代表网页.要引用一个属性,只需在document对象后加一个“.”号,然后再加上要引用的属性名. alert():该函数弹出一个消息框 ...
- 计算机网络三:域名、IP地址和TCP/IP协议
一.域名 域名(Domain Name),简称域名.网域,是由一串用点分隔的字符型标志名字组成的Internet上某一台计算机或计算机组的名称,用于在数据传输时标识计算机的电子方位(有时 ...
- File(File f, String child) File(String parent, String child)
(转载)File(File f, String child) 根据f 抽象路径名和 child 路径名字符串创建一个新 File 实例. f抽象路径名用于表示目录,child 路径名字符串用于表示目录 ...
- 前端 javascript
---恢复内容开始--- JavaScript JavaScript:是一门编译型的语言,比python语言还要弱类型的语言 JavaScript 分为三个部分:Ecmascript.dom.bom ...
- 功能强大的js数组方法:reduce
arr.reduce()方法接受一个函数作为累加器,数组中的每个值从左到右开始缩减,最终为一个值. reduce接受的参数主要有callback(回调函数)和可选参数initvalue(作为第一次调用 ...
- java基础0615
1. 1)2) 1)输出:Base 2)编译成功,但没有输出. 2. 编译成功,但没有输出. 3. 只有12行的话,不会新建文件.需要create~~ 4. public static void ...
- css伪元素 ::after ::before
我遇到的问题: div盒子标签设置了伪元素 ::after ::before 并给这俩content内容设置了空属性,添加了背景图,发现这两个伪元素没有宽度和高度. 解决方法 给设置伪元素的盒子的 ...
- Vipe框架构思记
准备着手写一个JAVA框架,基于公司目前的框架提取出来.当然公司现在的框架也是我搭建的.在这整理一下思路. 框架名称:Vipe AOP,IOC容器:Spring MVC:Spring MVC ORM: ...