JavaScript的函数(二)

JavaScript的函数之自执行函数和闭包

前面讲到js函数的基本分类及使用,今天我们来聊一下自执行函数的原理以及简单闭包原理。

1.自执行函数

说到自执行函数,其实就是函数不用被调用,自身执行代码块代码。整体思路如下代码:

1.按照我们的想法,先声明一个匿名函数,然后在函数后面加上(),但是会发现报错。如下图:
在这里插入图片描述

按照上面的思路去理解,在匿名函数后面直接加上()应该是可以立即执行的,但这个函数报错了,而且报了两个错误,是因为浏览器在解析js代码的时候,遇到function会当做函数声明,然后检查语法,函数声明必须要有函数名,所以报错;第二个括号处的语法错误在于函数声明到花括号处,就已经结束了,后面的()会被当作分组操作符,这个()实际上已经和函数声明没关系了,但是既然有了分组操作符,那就要有表达式,不然会报错。

2顺着错误原因修改,代码如下:

    //首先给方法加上名字,同时在第二个()中加入表达式,如下:
    function func(){
        
    }(1)
    // 此时代码不报错了,但是上面函数并没有立即执行,因为前面已经说过了,函数声明到{}末尾函数已经结束了,所以后面的()和函数没有关系,所以继续修改代码如下:
    
    (function (){
        console.log("自执行函数");
    }())
    
    // 推荐此方法
    (function (){
        console.log("自执行函数1");
    })()
    //是指是在function前面加上任意的操作符,让浏览器解析代码时,不将 function 开头的函数解析为函数的声明,如下:
    +function (){
        console.log("自执行函数2");
    }()
2.闭包

闭包就是能够读取其他函数内部变量的函数。因为只有函数内部的子函数才能读取局部变量,所以在本质上,闭包是函数内部和函数外部连接起来的桥梁。

简单举例如下:


    // 通常情况下,涉及到变量的作用域问题,函数外面是不可以获取函数内部的变量的
    function func(){
        var num=10;
    }
    // 调用函数
    func();
    console.log(num);//num is not defined
    
    
    //通过闭包,可以在函数外面访问函数内部的变量  
    function func1(){
        var num2=20;
        function func2(){
            return num2;
        }
        return func2();
    }
    console.log(func1());//20
    

通过return,将函数作为返回值返回,同时返回的函数中再返回函数func2内的变量,这是函数外面就可以获取到函数内部的变量了。

视频讲解地址:
1.https://www.bilibili.com/video/BV1QK411W7gT/

  • 9
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值