搜索
写经验 领红包
 > 设计

前端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 (){ }

本文内容由小故整理编辑!