变量求和_前端系列——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 (){ }js arguments
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论