zoukankan      html  css  js  c++  java
  • JavaScript---函数

    函数:由一堆代码组成,实现了某个功能,可以直接执行或通过行为调用的代码段

    函数的特点:选择使用,重复使用,忽略细节

    函数的创建方式:

    1. 声明式:function fn(){ }          声明函数关键字function
    2. 赋值时:var  fn=function(){ }       声明关键字var

    函数的执行方式:1.函数名+();     2.行为调用,通过事件执行

    回调函数:将函数A作为参数,传到另一个函数B中,在函数B中执行函数A,那么作为参数的函数A就是回调函数

    function( ){ }:

    1  //格式
    2  function       //声明关键字
    3  fn              //函数名
    4  ( )             //参数
    5  { }            //执行语句(函数体)

    函数的参数:

    函数在执行时,的参数叫:实参

    函数在定义时,的参数叫:形参

    实参被形参接收并保存

    形参相当于变量,实参相当于赋的值

     形参多,多的形参是undefined

    实参多,多出来的实参找arguments

    参数可以有多个:

    形参和实参的数量一致:一一对应
    形参多,实参少:多出来的形参是undefined
    形参少,实参多:多出来的实参被传到函数中一个神秘的区域,arguments
    注意:实参可以传递任何数据,相当于变量中可以保存任何数据

    demo:

     1 //比较两个数的大小
     2 <!DOCTYPE html>
     3   <html>
     4      <head>
     5          <meta charset="utf-8" />
     6          <meta name="viewport" content="width=device-width, initial-scale=1">
     7          <title></title>
     8      </head>
     9      <body>    
    10      </body>
    11      <script>
    12         function fn(a,b,c){
    13              if(a > b && a > c){
    14                  if(b > c){
    15                      console.log(c,b,a);
    16                  }else{
    17                      console.log(b,c,a)
    18                }
    19              }else if(b > a && b > c){
    20                 if(a > c){
    21                     console.log(c,a,b)
    22                  }else {
    23                     console.log(a,c,b)
    24                }
    25              }else if(c > a && c > b){
    26                      consle.log(b,a,c);
    27               }else{
    28                      console.log(a,b,c);
    29                  }
    30              }
    31        }
    32          fn(34,54,4)
    33     </script>
    34  </html>

    函数的分类:

    1.有名函数,声明式创建的函数,正常函数,正常执行,正常使用
    2.无名函数,非正常函数,不允许直接存在
               可以作为值存在---->赋值式创建函数
               可以作为实参存在---->回调函数
               可以作为行为处理函数存在---->事件处理函数
              可以作为匿名函数的函数体存在---->匿名函数
    3.匿名函数,立即执行,好像没写函数一样(function(){})()

     arguments是函数内部的一个专门用来存储所有实参的数组对象

    demo:

     1 function fn(a){
     2          console.log(arguments)
     3          console.log(arguments.length)
     4          console.log(arguments[0])
     5          console.log(arguments[1])
     6          console.log(arguments[2])
     7         var i=0;
     8         while(i<arguments.length){
     9             console.log(arguments[i])
    10             i++;
    11         }
    12  }
    13   fn("hello",123,true,1,2,3,4)

    小练习:

    编写一个函数,计算任意两个数字之间所能组成的两位数的奇数,数字必须是个位数,(比如: 计算0,3之间能组成的奇数个是01、21、03、13、23、31)

     1 //编写一个函数,计算任意两个数字之间所能组成的两位数的奇数,数字必须是个位数,(比如: 计算0,3之间能组成的奇数个是01、21、03、13、23、31)
     2 <script>
     3     function getOdd(a,b){
     4         if(a > b){
     5             var ls = a;
     6             a = b;
     7             b = ls;
     8         }
     9         var i=a;
    10         while(i<=b){
    11             // console.log("这是外层循环的:"+i)
    12             var j=a;
    13             while(j<=b){
    14                 // console.log("这是内存循环的:"+j)
    15                 if(("" + i + j) % 2 != 0 && i != j){
    16                     console.log("" + i + j)
    17                 }
    18                 j++
    19             }
    20             i++;
    21         }
    22     }
    23     getOdd(0,3)
    24 </script>

    数据是四位的整数,在传递过程中是加密的,加密规则如下:每位数字都加上5,然后用除以10的余数代替该数字,再将第一位和第四位交换,第二位和第三位交换,请编写一个函数,传入原文,输出密文

     1 //数据是四位的整数,在传递过程中是加密的,加密规则如下:每位数字都加上5,然后用除以10的余数代替该数字,再将第一位和第四位交换,第二位和第三位交换,请编写一个函数,传入原文,输出密文
     2 <script>
     3     function encryption(num){
     4         var a = parseInt(num/1000);
     5         var b = parseInt(num/100)%10;
     6         var c = parseInt(num/10)%10;
     7         var d = num%10;
     8 
     9         a += 5;
    10         b += 5;
    11         c += 5;
    12         d += 5;
    13   
    14         a %= 10;
    15         b %= 10;
    16         c %= 10;
    17         d %= 10;
    18 
    19         var ls = a;
    20         a = d;
    21         d = ls;
    22 
    23         ls = b;
    24         b = c;
    25         c = ls;
    26         console.log(""+a+b+c+d)
    27     }
    28 
    29     encryption(3716)
    30 </script>

    自执行函数:这种函数没有名称,只有声明体,实际上是一个 匿名自我调用的函数。这种函数的好处是保持变量独立,不被外部变量污染,形成一个封闭的函数执行环境。

     1 function(){
     2  
     3 })();
     4 ;(function(context,win){
     5 <br>
     6 })
     7 
     8 
     9 var divs=tr.getElementsByTagName("div");
    10 for(var  i=0;i<divs.length;i++){
    11      (function(div){
    12       div.onclick=function(){
    13       alert(this.innerHTML);
    14       }
    15 })(divs[i])
    16  
    17 }

    高阶函数:英文叫Higher-order function。JavaScript的函数其实都指向某个变量。既然变量可以指向函数,函数的参数能接收变量,那么一个函数就可以接收另一个函数作为参数,这种函数就称之为高阶函数。简单的说法就是“高阶函数就是可以把函数作为参数,或者是将函数作为返回值的函数。”,其实最典型的应用就是回调函数了。

    1.函数回调

    1 $.get(' ',{},function(data){
    2  
    3 })
    4  
    5 var   test=function(callback){
    6         callback.apply(this,arguments)
    7  
    8 }

    2.函数柯里化:在一个函数中首先填充几个参数(然后再返回一个新函数)的技术称为柯里化(Currying),柯里化函数里面定义一个局部变量arr数组,然后返回一个函数,返回的函数体里对变量arr进行了赋值,每次当函数传入参数的时候都会将参数push到arr里面,然后返回函数体,形成了一个闭包。当没有参数传入的时候就直接执行传入的sum函数,然后执行函数sum传入的的参数就是arr.

    这个定义可能有点难理解,先看下一个简单的函数

     1 var  sum=function(){
     2       var total=0;
     3       var  argArr=arguments;
     4        for (var i = 0; i < argArr.length; i++) {
     5               total+=argArr[i];
     6    }  
     7          return  total;
     8  }      
     9 var test=  currency(sum);          
    10 test(100,200);
    11 test(300)
    12 alert(test());
  • 相关阅读:
    ABAP接口用法
    监听textarea数值变化
    The first step in solving any problem is recognizing there is one.
    Wrinkles should merely indicate where smiles have been.
    God made relatives.Thank God we can choose our friends.
    Home is where your heart is
    ABAP跳转屏幕
    Python 工具包 werkzeug 初探
    atom通过remote ftp同步本地文件到远程主机的方法
    Mongodb学习笔记一
  • 原文地址:https://www.cnblogs.com/cx1215/p/11406206.html
Copyright © 2011-2022 走看看