码迷,mamicode.com
首页 > 编程语言 > 详细

JavaScript---函数

时间:2019-08-24 22:59:50      阅读:114      评论:0      收藏:0      [点我收藏+]

标签:htm   定义   比较   script   实现   argument   ota   parse   数字   

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

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

函数的创建方式:

  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());

 

JavaScript---函数

标签:htm   定义   比较   script   实现   argument   ota   parse   数字   

原文地址:https://www.cnblogs.com/cx1215/p/11406206.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!