前端umbe方法(前端取数)
导语:前端系列——arguments及任意数求和
一、函数的一些知识
前面的文章中我们讨论过函数的运行机制以及函数的语法格式等,这里重温一下。
函数执行的时候,都会形成一个全新的私有作用域(私有的栈内存),目的是:
1、把原有堆内存中存储的字符串变成JS表达式执行
2、保护里面的私有变量不受外界的干扰(和外界是隔离的)
我们把函数执行的这种保护机制,称之为“闭包”。
函数的入口:形参
函数的出口:返回值 return;——把函数运行的结果(或者函数体中的部分信息)拿到外面去使用。
以下两个小案例进一步说明形参和返回值的一些小知识。
1——
function fn(n,m){
var total = 0;
total = n+m ;
return total; //=>并不是把total变量返回,返回的是变量存储的值,return返回的永远是一个值。
}
fn (10,20);//=>代表的是函数执行(不仅如此,它代表的是函数执行后,返回的结果【return返回的结果】)
console.log(fn(1,2));//=>3.也可以将fn(1,2)的结果赋给一个变量,然后再输出。
//=>fn代表的是函数本身
如果当前函数没有return结果出来(或者return;啥也没有返回),函数执行,在外面拿到的结果都是undefined。
2——
function fn(n,m){
//=>如果n/m有一个没有传递值,我们返回0;
if(n === undefined || m === undefined){
return 0;//=>return还有一个作用:类似于循环中的break,能够强制结束函数体中代码的执行(return后面的代码不再执行)
}
var total = 0;
total = n+m ;
return total;
}
console.log(fn(10));//=>n=10 m=undefined返回结果为NaN;
total = 0;0是有值的,值为0 ,从内存方面来说,会在栈内存中占一个位置
total = null; 开发者更喜欢用null来作为初始值,null是空对象指针,是不占内存位置的
二、arguments以及任意数求和
任意数求和:不管函数执行的时候,传递多少个实参进来,我们都可以求和 。
为什么使用arguments?
1、形参有局限性:我们需要具体的知道用户执行的时候传递实参数量、顺序等,才可以使用形参变量定义对应的入口
2、arguments:函数内置的实参集合(内置:函数天生就存在的机制,不管你是否设置了形参,也不管你是否传递了实参,arguments都有,始终存在)
arguments是什么?
arguments是一个类数组(不是数组,不能直接使用数组中的方法)。
即使设置形参变量,形参该是什么值还是什么值,但是arguments存储的是所有传递进来的实参,所以他被称为“实参集合‘。
其中callee:存储的是当前函数本身 arguments.callee===sum =>true
任意数求和:
以上代码如果用户输入非数字字符则不能正确的计算出相应的结果。所以下面对上面的代码加以优化:
三、函数的类型
实名函数:就是有名称的函数
function fn(){ } (其名称为fn)
匿名函数:就是没有名字的函数
oBox .onclick = function (){ }
自执行函数:创建和执行一起完成的函数,主要有以下几种形式
(function(){
})();
~function(){
}();
+function(){
}
!function(){
}
函数表达式:把函数当做值赋给变量或者元素的事件
var fn =function (){ }
本文内容由小故整理编辑!