匿名函数和闭包

Posted qianqian-it

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了匿名函数和闭包相关的知识,希望对你有一定的参考价值。

回顾一下

  基本类型 

 

      五大基本类型:

 

            String    Number   Boolean   Null    undefined    //占有固定的内存大小,如数值型占八个字节,布尔类型占一个字节,他们的值保存在栈空间,

 

      三大引用类型

 

             数组(array) 对象(Object) 函数(function)//引用类型占用空间内存不确定,但内存地址大小是固定的,存储的实际上是数据的内存地址

 

函数作为参数的几种方式

              1.函数作为另一个函数的参数

    2 有参函数函数作为参数

<script >
//第一种函数作为另一个函数的参数
        function f(){
            alert("我是作为参数的函数")
        }
        function s(a){//此处啊作为形参,可以是任意值
            a();
        }
        s(f);
//第二种函数作为另一个函数的参数
       function people(){
           return 100
       }
       function sum(x,y){
           alert(x+y())
       }
       sum(10,people)

  //有参函数作为函数参数
      function fun(a){
          return a*a;
      }
      function ss(x,z){
          alert(x+z(x))
      }
      ss(100,fun)

</script>

 

 函数的内部属性

          1 arguments 本质上相当于一个集合,表示函数参数的一个集合

             2 使用arguments.length检测函数参数个数

<script >

  function sum(){
    alert(arguments.length)//检测参数个数
      result=0;
      for(var i=0;i<arguments.length;i++){
          result+=arguments[i]
      }
      return result;
  }//求参数和
  alert(sum(1,2))
  alert(sum(1,2,3,4));

</script>

 

   

一  匿名函数

      定义:没有函数名字的函数

               1.单独的匿名函数是无法运行和调用的

     2. 可以把匿名函数赋值给变量

     3. 通过(匿名函数)()来执行

                4. 匿名函数传递参数(匿名函数)(参数)

接下来看一些小例子

<script >
    <!-- //普通函数 -->
    function people(){
      alert("我是一个好人")
    }
    people()

 //    //把参数赋值给一个变量
    
    var str=function(){
        alert("把函数赋值给一个变量")
    }
     alert(str)  //弹出函数体本身
     str()       //弹出结果


    // 匿名函数
     (function() {
         alert("你是一个坏人")
     })()


     //带参数的匿名函数
     (function(m,n) {
         alert(m+n)
     })(100,200)

</script>

 

 二 闭包

   定义:闭包是指可以访问另一个函数作用域中的变量

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

   常见方式

   闭包的常见方式就是在一个函数中创建里另一个函数

  作用:通过闭包可以访问局部变量

             可以让局部变量始终保持在内存中

  

   

 

 

 

 

 

 



以上是关于匿名函数和闭包的主要内容,如果未能解决你的问题,请参考以下文章

Golang中的匿名函数(闭包)

Go语言-make陷阱和闭包函数

14.匿名函数和闭包

自调用匿名函数(匿名闭包)解析与调用

自调用匿名函数(匿名闭包)解析与调用

php匿名函数和闭包函数及use关键字传参及Closure匿名函数类