标签:htm 定义 比较 script 实现 argument ota parse 数字
函数:由一堆代码组成,实现了某个功能,可以直接执行或通过行为调用的代码段
函数的特点:选择使用,重复使用,忽略细节
函数的创建方式:
函数的执行方式: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());
标签:htm 定义 比较 script 实现 argument ota parse 数字
原文地址:https://www.cnblogs.com/cx1215/p/11406206.html