零基础JavaScript入门教程(33)-函数的返回值

点此查看 零基础JavaWeb全栈文章目录及源码下载

1. 背景

之前,我们了解了,函数其实就是经验的复用体,函数包括的是一些操作执行的步骤。

再说的透彻一点,函数其实就是去做一件事,可以把事情封装为函数。

那么就有一个问题,做事情是不是要有结果?比如学车,我们需要知道学会了吗?比如网购,我们需要知道买了多少东西、花了多少钱。

更简单的例子,比如我们要进行2个数的加法运算,我们希望得到的结果是两个数的和。

OK,所以说,做事要有结果;同理,执行函数也要有结果,在JS函数里面,结果称之为返回值。JS语言里面,函数通过返回值来表达结果的概念。

2. JS返回值实现

我们以计算两个数字的和为例,来演示JS函数返回值的实现。

2.1 定义函数

我们编写一个函数,计算两个数字的和。

		// 计算2个数字的和
        function add(a,b){
    
    
            
        }

我们解释下上面的代码:

  • // 计算2个数字的和是注释,用来说明函数的用途。
  • function用来定义函数,说明后面JS代码是函数的定义部分。
  • add是函数名称,也就是说,这个函数要做的事情是加法。
  • (a,b)是函数的参数,也就是我们要计算其和的两个数字,JS函数通过小括号来容纳参数,小括号内部的就是参数。
  • {}大括号里面的部分就是函数体,也就是具体函数的操作步骤了。需要注意的是,大括号里面可以使用参数,因为参数就是为函数体提供辅助信息的。

2.2 编写函数体

我们现在,在函数体内编写计算a,b之和的过程,当然这个计算和的过程非常简单。代码如下:

		// 计算2个数字的和
        function add(a, b) {
    
    
            var sum = a + b;
        }

上面的代码中,我们使用变量sum来保存a,b的和,完成了a+b的运算。

2.3 返回值

当我们的运算结束后,我们这个函数就有结果,也就是加法的结果。此时我们可以通过return来返回函数的运算结果。如下:

		// 计算2个数字的和
        function add(a, b) {
    
    
            var sum = a + b;
            return sum;
        }

当执行return sum;语句时,表示函数执行结束,且函数整个执行的结果为return后面的内容也就是sum,所以该函数的运行结果就是sum的值。

2.4 函数调用

我们函数编写完成后,我要使用函数。看下面的代码:

	add(1, 2);//计算1+2的和

上面的代码运行后,会计算1+2的和,然后函数的返回值sum值为3,但是虽然有返回值,但是返回值并未被使用。

那么如何使用呢?我们可以将函数的返回值,赋值给一个变量,如下:

	var result=add(1, 2);//计算1+2的和

在上面的代码中,我们知道赋值运算符=,是要先执行右边的部分,然后把右边的计算结果赋值给左边的部分。

那么在执行右边的部分,也就是add(1,2)时,add是一个函数,所以会执行函数体,同时把1,2作为参数传递给a,b,所以函数计算结果sum为1+2=3。然后函数的返回值就是3,所以add(1,2)这个函数的运算结果就是3 。

最后将3赋值给result,所以result保存的值就是函数的返回值,也就是函数的运算结果。

3. 函数无返回值的情况

还有一种特殊情况,就是函数没有返回值,也就是没有return语句。例如:

		function add(a, b) {
    
    
            var sum = a + b;
        }
        var result = add(1, 2);
        console.log(result);

在上面的代码中,虽然计算了a+b,但是没有使用return返回值。

所以说add函数没有返回值!这种情况下,一个没有返回值的函数,运行结果赋值给了result,那么result会得到什么东西呢?

我们直接看结果:
在这里插入图片描述
这个结果非常合理,因为我们没有明确的通过return指定返回值,所以返回值是未定义,在JS里面表达未定义这个含义的数据类型就是undefined

4. 小结

干事要有结果,函数要有返回值!

干事也可以光安排,不要结果;那么函数也可以没有返回值。

所以说程序世界,和现实是相通。

猜你喜欢

转载自blog.csdn.net/woshisangsang/article/details/123756268