• js 中特殊形势的函数-匿名函数的应用


    javascript中的匿名函数,那什么叫做匿名函数?

    匿名函数就是没有函数名称;演示代码:

    1 <script>
    2     function(x,y){
    3         return x+y   //这个就是一个匿名函数,没有函数名,但是这个函数不能调用。如何调用呢?
    4     }                //要声名一个变量,然后把这个匿名函数的执行的代码,和返回值赋值给声名的变量
    5 </script>

    javascript中的函数也是一种数据类型,只不过这种特殊类型有两个重要的特性:

    1.他们所包含的是代码。

    2.他们是可以执行的。演示代码:

     1 <script>
     2       var text = function(x,y){
     3           return x+y;       //把这匿名函数赋值给变量text,说明这个匿名函数其实也是一个数据类型
     4       }
     5       alert(typeof text)   //查看这个数据类型,=>function  数据类型是一个函数数据类型
     6       alert(text(1,2))     //然后我们再通过调用这个赋值给这个变量。=>3
     7       var text1 = text;   //然后这个被赋值的这个函数数据的变量还可以再赋值给其它变量
     8       alert(text1(4,5))   //然后再次调用赋值后的变量 =>9
     9 
    10 </script>

    可以将匿名函数作为参数传给其它函数,接收方函数就可以通过所传递进来的函数完成某些功能

    先了解非匿名函数的回调方法 演示代码:

     1 <script>
     2      function calc(x,y){
     3          return x()+y();    //把text1函数的返回值作为calc函数参数x的值来传参调用
     4      }                     //把text2函数的返回值作为calc函数参数y的值来传参调用
     5      function text1(){
     6          return 1
     7      }
     8      function text2(){
     9          return 2
    10      }
    11      alert(calc(text1,text2))     //=>3
    12 
    13 </script>

    再来看看匿名函数的回调方法 演示代码:

    1 <script>
    2      function calc(x,y){
    3          return x()+y();    //把text1函数的返回值作为calc函数参数x的值来传参调用
    4      }                     //把text2函数的返回值作为calc函数参数y的值来传参调用
    5      alert(calc(function(){return 1},function(){return 2}))
    6              //本质上用两个匿名函数的返回值做了x,y的传参
    7 </script>

    回调函数的实列  演示代码:

     1 <script>
     2         function addOne(a){
     3             return a+1
     4         }
     5         function calc(a,b,c,callback){
     6             var arr=[];      //先声名一个空数组
     7             for(var i = 0 ;i<3;i++){    //循环遍历
     8                 arr[i] = callback(arguments[i]*2)  //用arguments对象把三个参数的值乘以2,返回给addOne函数来调用产生的返回值再赋值给声名的空数组
     9             }
    10             return arr;
    11         }
    12          alert(calc(1,2,3,addOne))     //然后进行调用   =>3,5,7
    13          alert(calc(2,3,4,function(a){return a+1}))//这个用的是用一个匿名函数来回调 //返回的是5,7,9
    14 </script>

    可以用call来进行回调函数 语法为:函数名.call(函数名,参数1,参数2)

    可以用apply进行回调函数  语法为. 先声名一个数组 var a =[参数1,参数2 ]       函数名.apply(函数名,a)

    自调的匿名函数,我们也可以称为立即调用的匿名函数。

    优点:  使用自调的匿名函数不会产生任何全局变量。

    缺点: 函数无法重复执行,适合执行一些一次性初始化的工作     演示代码:

    1 <script>
    2     (function(x,y){
    3         alert(x+y)
    4     })(1,2)
    5 </script>
  • 相关阅读:
    ETL Pentaho Data Integration (Kettle) 插入/更新 问题 etl
    Value Investment
    sqlserver 2008r2 表分区拆分问题
    HTTP与HTTPS的区别与联系
    别人分享的面经
    饥人谷开放接口(教程)
    java内存泄漏
    单例模式
    Maven项目上有小红叉咋办
    Socket通信1.0
  • 原文地址:https://www.cnblogs.com/Ziksang/p/5186465.html
Copyright © 2020-2023  润新知