美文网首页让前端飞Web前端之路
闭包和回调函数知识点以及练习

闭包和回调函数知识点以及练习

作者: Hello杨先生 | 来源:发表于2019-06-20 15:16 被阅读10次

函数注意事项
1、命名常规 驼峰命名法首字母小写

2、函数名后的()可带参数也不可

3、函数声明时 () 里带的参数为形参 ; 函数调用时 () 里带的参数为实参

4、形参与实参个数的实际联系 取决于实参 若实参个数 < 形参个数 则未赋值的形参值为undefined

5、函数默认返回值为undefined

6、除匿名函数外 函数的声明和调用没有前后之分(在同一个文档里)
7、匿名函数在调用时 必须放在匿名函数声明之后


s执行顺序
1、检查装载阶段 (声明变量提前、函数声明提前、检查js有没有语法错误)
2、执行阶段 (变量的赋值、函数的调用等)


闭包

闭包:闭包是由函数以及创建该函数的词法环境组合而成 可以使用函数之外定义的变量


在函数的内部在定义一个函数:函数2被包裹在函数1里面,函数1里面的所有局部变量对函数2都是可见的 此时函数2 就是闭包函数
(JS特有的"链式作用域"结构:父对象的所有变量对子对象都是可见的,反之则不成立)
定义在函数里的函数 就是一个闭包函数

闭包就是能够读取其他函数内部变量的函数,函数没有被释放,整条作用域链上的局部变量都将得到保留。

由于在javascript语言中,只有函数内部的子函数才能读取局部变量,因此可以把闭包简单理解成‘定义在一个函数内部的函数’。

所以,在本质上,闭包就是将函数内部和函数外部连接的一座桥梁。

        var num = 1 ;
        function func() {
            alert(num) ;
        }
        func();          //1

        function func1(){
            var num1 =1 ;
        }
        alert(num1) ;    //num1  undifined

答案:
弹窗 1
num1 is not defined




        function func1(){
            var num1 =1 ;
            return num1;
        }
        alert(func1()) ;    //回调函数

弹窗 1


      // func2是闭包 
        function func1 () {
            var num1 = " func 2 要调我"
            function func2 (){
                alert(num1);
            }
            return func2;
        }

        var fa = func1();
        console.log(fa);
        fa();

需要加深理解
弹窗 func 2 要调我
控制台 ƒ func2() {
alert(num1);
}


        var nAdd ; 
        function f1() {
            var n = 1 ;
            nAdd = function() {
                n+=1 ;
            };
            function  f2(){
                alert (n);
            }
            return f2() ;
        }
        var result = f1() ;
        // nAdd;   //没有值  空值
        result() ;   //弹窗   1 

弹窗 1


 function get(name) {
            var name =  " pig " ;

            function fly() {
                alert(name + " can fly ");
            }
            return fly;
        }
        var cat = get() ;
        cat();


function get(name) {
           
            var name = name;

            function fly() {
                alert(name + " can fly ");
            }
            return fly;
        }

        var animal = get("cat");
        animal();

弹窗 pig can fly


 var arr1 = [333, 222, 2, 4, 5, 45];
        arr1 = arr1.filter(function (a) {
            return a > 100;
        })
        alert(arr1);

答案:按照条件输出大于100的数


相关文章

  • 闭包和回调函数知识点以及练习

    函数注意事项1、命名常规 驼峰命名法首字母小写 2、函数名后的()可带参数也不可3、函数声明时 () 里带的参数为...

  • Swift基础语法-闭包,闭包函数回调,尾随闭包,闭包捕获值,循

    本节知识点 闭包的基本概念 闭包基本使用 闭包表达式作为回调函数 闭包的多种写法(尾随闭包) 闭包表达式优化 闭包...

  • 【Swift】关于闭包的几种写法

    闭包 闭包是一个特殊的函数,经常用于回调 简单举个例子:在方法中定义闭包实现回调传值 尾随闭包:1.如果闭包是函数...

  • 闭包和回调函数

    闭包 函数A内定义了一些变量和内部函数B,而且在B中使用了A的变量,然后返回函数B,那么B就称为A的闭包(闭包也是...

  • ★ 回调函数、闭包

    普通函数和回调函数有什么区别? 什么是闭包? 普通函数和回调函数主要是在调用方式上的区别: 普通函数的调用:调用程...

  • 第02天(函数、工程管理)_03

    11_函数类型.go 12_回调函数.go 13_匿名函数和闭包.go 14_闭包捕获外部变量的特点.go 15_...

  • 闭包--Closure

    学习Ajax模式之前,需要对闭包和回调函数的概念有所理解. 闭包的概念 当一个函数内调用另一个函数,同时这个函数引...

  • 4 iOS类微信日志2018-01-13

    Swift 闭包的使用 步骤: 1. 声明闭包 2. 声明闭包的别名属性 3. 设置回调函数 4. 调用闭包 声明...

  • 回调函数和闭包(匿名函数)以及闭包的序列化

    回调函数 回调函数:Callback (即call then back 被主函数调用运算后会返回主函数),是指通过...

  • Day4 闭包

    闭包允许函数访问定义时的词法作用域回调函数基本上都是闭包模块利用闭包隔离变量,暴露公共API(也会伴随IIFE立即...

网友评论

    本文标题:闭包和回调函数知识点以及练习

    本文链接:https://www.haomeiwen.com/subject/isvkqctx.html