JavaScript函数的返回值、匿名函数与自调用

1、函数的返回值

当函数执行完的时候,并不是所有的时候都要把结果打印。我们期望函数给我们一些反馈(比如计算的结果返回进行后续的运算),这个时候可以让函数返回一些东西,也就是返回值,函数通过return返回一个值

语法:

    function f(形参,形参){
        代码
        return 返回值
    }
    var re = f(实参1,实参2);

正常声明调用函数,然后加一个 return 后面跟你要的返回值
下面要定义一个变量去接一下返回的值,返回值是什么,定义的 re 就是什么 ,这就是返回值的语法

下面我们尝试一下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
    
</body>
<script>
    function f(a,b){
        var c = a-b;
        return c;
    }
    var h = f(5,2);
    console.log(h)
</script>
</html>

看结果:
在这里插入图片描述

... ...
    function f(a,b){
        var c = a-b;
        return c;
    }
    f(5,2);
</script>
</html>

那么如果不去接返回值的话,就是什么都没有的

在这里插入图片描述
前面我们说了,你有返回值,返回值是什么,下面的变量就是什么,那我们在看,如果不返回的话,会是什么结果的,:

... ...
    function f(a,b){
        var c = a-b;
        // return c;
    }
    var h = f(5,2);
    console.log(h)
</script>
</html>

在这里插入图片描述

如果函数中没有return,那么函数调用之后返回值值的就是undefined

那么我们有return,但是没有值,会怎么样:

... ...
    function f(a,b){
        var c = a-b;
        return ;
    }
    var h = f(5,2);
    console.log(h)
</script>
</html>

在这里插入图片描述
结果依然是undefined

接着我们看一下别的情况:

... ...
    function f(a,b){
        var c = a-b;
        return c;
        console.log(444);
    }
    var h = f(5,2);
    console.log(h)
</script>
</html>

这次我们在return下面加一个console.log,打印一个值,看结果:
在这里插入图片描述
可以看到,是没有的
注意:
函数中 return 的后面,不管有什么代码,均不执行;return后函数的调用结束

2、匿名函数与自调用函数

匿名函数,函数本身是没有名字的

那么什么是匿名函数呢,其实在之前就用过了

... ...
<script>
    var fun = function(){
        
    }
</script>
</html>

没错,就是我们之前用过的表达式声明,是什么意思呢,我们来一一解释:
var fun这个仅仅就是声明了一个变量,变量的名字叫fun,剩下的function(){},是没有名字的,只是将本身赋值给fun,这个变量了,此时就是一个匿名函数。
而调用也就简单了,和之前的一样:

    var fun = function(){
        console.log(1);
    }
    fun();

在这里插入图片描述

那我们就是什么变量都不给他赋值呢

... ...
    (function(){
        alert(123);
    })
</script>
</html>

我们看这段代码,我们知道一个括号里面可以写一些表达式,并且优先级是很高的,也可以代表这是一个整体,那我们就直接在括号了写,那么这个函数是有没有名字的呢?

注意,是没有的,那可能会说了,那怎么调用函数啊,我们之前说过了,函数不调用是不能用的,
那我们看上面,调用函数就是定义的变量后面加(),就可以调用了,
那我们这个就是直接加括号就可以了:

在这里插入图片描述
可以看到,弹出了窗口,说明函数调用成功了

想这样的我们称为:
立即执行函数 或者叫 自调用匿名函数

在后面的学习中,我们会学习到这样的一个东西:
作用域:
那么有了这个匿名函数,就可以 防止全局变量的污染,封装一个局部作用

这点需要注意,因为我们还没有接触到作用域,但是现在知道有这个就行了,就先有一个这样的概念,这个匿名函数是在后面会有作用的

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

杨旭华 

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值