首页 > javascript函数的问题

javascript函数的问题

本人初学js,想请教大神一个问题,关于js中的函数,在一个function(){...}中,有个return返回值,但是可以有返回值,也可以没返回值,我发现不管有返回值还是没有返回值函数都可以进行对一系列问题进行封装,优化,再内部进行处理,外部直接调用....都是为了提供代码的复用性

那么我的问题是:在进行写函数的时候,不管用不用返回值都可以外部调用,那么这个return返回值,什么情况下用,什么情况下不用呢?


function a(){
    var abc="测试"
}
//现在这个a()函数会产生一个变量adc,但是你在这个函数的外部是不能访问的
alert(abc) //会报错,没有abc这个东西
//那么函数这样改写
function a(){
    return {var abc="测试"}
}
//现在执行这个a()函数就会有一个返回值  返回一个变量abc
//比如 var b=a();  //现在b就等于函数内的abc变量

这种通过return 可以在外部访问函数内部的变量叫做闭包.
通常的是在需要对外暴露方法或者变量,或者在大型开发中可以定义私有成员,才会使用。
但是使用闭包注意内存泄漏的问题,因为变量回收机制的原因,太多的闭包也会导致性能问题。


一句话,你需要获取函数执行的结果时就用return返回值


果然大家都靠着名词吃饭, 一个比一个更能吹水啦.


问题建议改为: javascript函数什么时候使用返回值

js的函数里,如果在执行结束,没有调用return语句的话,引擎会自动帮你return undefined。

那另外一个问题是:返回值有什么用。
对于同步函数,返回值是你获取信息最方便的办法
比如你想知道 1和3哪个小
你可以

var min = Math.min(1,3)
console.log(min)

这样执行一个函数从而获得运算值。


你的疑问主要是为什么要有返回值?其实就是,你认为函数就是用来执行逻辑的。
但是呢?
函数其实主要做两件事情:

  1. 执行逻辑

  2. 交互

举个例子:
你妈妈给你生活费,这算是“执行逻辑”,因为你妈妈不需要你马上反馈她钱是怎么花的。
但是如果你妈妈让你帮她去打瓶酱油呢?这就是“交互”,你必须返回酱油给她,如果你不返回,今天就只能喝粥了。
所以, 什么情况用返回值,就看是不是需要交互


返回值就是在函数执行之后返回一些你可能需要知道的答案,拿数组操作为例子吧:

arr1 = [1,2,3]
arr2 = [4,5,6]
arr1.concat(arr2) //[1, 2, 3, 4, 5, 6]
arr1 //[1, 2, 3]
arr2 //[4, 5, 6]

原数组在执行concat方法之后合并在了一起,有了返回值,它可以当作一个变量使用:


arr3 = arr1.concat(arr2);

所以返回值就是返回一个你可能需要的变量,没有返回值的操作,就是执完了就结束了:

var c;
function plus(a,b){
     c = a+b;
};
plus(1,2);  //没有返回值
c; //  3

这种情况你就可以完全使用返回值来做:

var c = plus(1,2);  //c为3
function plus(a,b){
    return a+b;
}
【热门文章】
【热门文章】