一、一般函数
js中的函数演示
函数:就是一个功能的封装体
定义功能通常需要两个明确:
1、功能的结果
2、功能实现中的参与运算的未知的内容
Java中定义函数的格式是:修饰符 数据类型 函数名(参数列表){}
js中定义函数的格式:
通过制定的关键字来定义
function 函数名(参数列表){
函数体:
return 返回值;//如果没有具体的返回值,return语句可以省略不写
}
3、函数的一些细节
1、只要使用函数的名称就是对这个函数的调用
2、函数中有一个数组在对传入的参数进行存储。这个数据就是arguments
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>functionDemo</title> </head> <body> <script type="text/javascript"> function demo() { alert("demo run"); return; } demo(); //调用demo() function add(x,y) { return x+y; } var sum=add(4,5); alert(sum) //--------------------- function show(x,y) { alert(x+"::"+y) //证明arguments存储函数传入的参数 for(var a=0;a<arguments.length;a++){ document.write(arguments[a]) } //执行结果:45678 } show(4,5,6,7,8);//建议函数中定义几个参数就传递几个参数 function demo1() { return 100; } var sum = demo1();//执行结果:100 var sum = demo1; document.write("sum=="+sum); //执行结果:sum==function demo1() { return 100; } /* * 为什么会出现两个不同的结果: * 第一个:demo1函数运行,并将返回的结果赋值给sum * 第二个:demo1本身就是一个函数名,而函数本身在js中就是一个对象。demo1就是这个函数对象的引用,将 * demo1这个引用的地址赋值给sum。这时sum也指向了这个函数对象,相当于这个函数对象有两个名称 * 打印的时候如果sum指向函数对象,那么会将该函数对象的字符串表现形式打印出来,就是该函数的代码定义格式 * * */ </script> </body> </html>
二、动态函数
使用的是js中内置的一个对象Function
只不过用的不是很多
参数列表,函数体都是通过字符串动态指定的
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>functionDemo</title> </head> <body> <script type="text/javascript"> var add = new Function("x,y","var sum;sum=x+y;return sum"); var he = add(4,8); alert(he) //一般常用这种方式,上面用到动态函数Function就是相对灵活一些 function add1(x,y) { var sum; sum = x+y; return sum; } </script> </body> </html>
三、匿名函数
没有名字的函数
通常是函数的简写形式
var add3 = function(a,b) {
return a+b;
}
alert(add3(7,8));
四、函数练习
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>练习1</title> </head> <body> <script type="text/javascript"> /* * 综合练习: * 1、定义功能,完成对数组的最值获取 * 2、对数组排个序 * 3、对数组元素进行反转 * * */ var arr = [3,12,5,55,8,99]; //取最值 function getMax(arr) { var max=0; for(var i=1;i<arr.length;i++){ if(arr[i]>arr[max]){ max = i; } } return arr[max]; } alert("getMax=="+getMax(arr));//执行结果:getMax==99 //排序 function mySort(arr) { for(var i=0;i<arr.length-1;i++){ for(var j=i+1;j<arr.length;j++){ if(arr[i]>arr[j]){ swap(arr,i,j); } } } } function swap(arr,x,y) { var temp = arr[x]; arr[x]= arr[y]; arr[y]= temp; } function println(val) { document.write(val+"<br/>") } println("排序前=="+arr); mySort(arr); println("排序后=="+arr) //数组反转 function reverseArray(arr) { for(var start=0,end=arr.length-1;start<end;start++,end--){ swap(arr,start,end) } } reverseArray(arr); println("反转后=="+arr); /* 执行结果: 排序前==3,12,5,55,8,99 排序后==3,5,8,12,55,99 反转后==99,55,12,8,5,3 */ </script> </body> </html>