JavaScript之 - 函数(正常函数、动态函数、匿名函数)
JavaScript之 ------ 函数(一般函数、动态函数、匿名函数)
函数
一、一般函数
1、格式:
function 函数名(形式参数...)
{
执行语句;
return 返回值;
}
函数是多条执行语句的封装体,只有被调用才会被运行。
注意:调用有参数的函数,但没有给其传值,函数一样可以运行,或者调用没有参数的函数,给其传值,该函数也一样运行。
说的简单点:只要写了函数名后面跟了一对小括号,该函数就会运行。
2、函数虽然定义时是声明成两个参数,但调用时却是可以传入任意个
例:
<span style="font-size:14px;">function show(x,y){ alert(x+":"+y); }</span>show(4,8); 结果:4:8
show(4);结果:4:undefined
show(); 结果:undefined:undefined
show(4,8,89); 结果:4:8
综上的例子,Js当中的函数是不存在重载的。如果有,一定就通配所有的了。
3、每个函数中,存在一个 默认的数组arguments ,里面存储着本次调用时传入的所有实参
<span style="font-size:14px;">function show2(x,y){ for(var i=0; i<arguments.length;i++){ document.write(arguments[i]+" "); } } show2(1,2,3,45);</span>结果:1 2 3 45
4、函数在调用时的其他写法
<span style="font-size:14px;"><script type="text/javascript"> function getSum(){ return 100; } var sum = getSum(); // alert(sum); //结果:100 var sum2 = getSum; //相当于java当中的 引用捆绑 //alert(getSum); //结果:getSum.toString() // alert(sum2); //结果:sum2.toString(),也就是getSum.toString() //alert(sum2()); //等价于调用:getSum() function show2(){ alert("kkkl"); } alert( show2() ); //先弹出“kkkl”,再弹出“undefined”。因为里面的函数没有return值,而外面的函数要用变量去接,结果相当于变量没赋值就输出 </script></span>
二、动态函数
利用Js当中内置的对象Function来构造一个函数,构造方法中的第1个参数是“形参”,第2个参数是“函数体”。
该思想类似于Java当中的类反射。我们平时写函数时通常不用,但关键的地方一写,整个程序的功能会变得很活。
<span style="font-size:14px;">var add = new Function("x,y", "var sum; sum=x+y;return sum;"); var s = add(100,39); alert("s="+s);</span>
三、匿名函数
格式:function(){...}
例:
var demo = function(){...} demo();
通常在定义事件属性的行为时较为常用。
例:
function test() { alert(“load ok”); } window.onload = test;
可以写成匿名函数的形式:
window.onload = function() { alert(“load ok”); }
匿名函数就是一种简写格式。
四、函数调用
function.js
//1 取最大值:输出给定数组当中值最大的元素 //函数定义 function getMax(arr){ var max=0;//记下标 for(var x=1; x<arr.length; x++){ if(arr[x]>arr[max]){ max = x; } } return arr[max]; } //2 数组排序 //函数定义 function sortArray(arr){ for(var x=0; x<arr.length-1; x++){ for(var y=x+1; y<arr.length; y++){ if(arr[x]>arr[y]){ swap(arr,x,y); } } } } //辅助函数,用于交换数组中的两个元素 function swap(arr,x,y){ var temp = arr[x]; arr[x] = arr[y]; arr[y] = temp; } //3 模拟Java当中的System.out.println() function println(str){ document.write( str +"<br>"); } //4 在数组当中查找元素(若存在则返回该元素的位置,否则返回-1) function searchElement(arr,key){ for(var x=0; x<arr.length; x++){ if(arr[x]==key){ return x; } } return -1; } //5 二分查找 function binarySearch(arr,key){ var max,min,mid; min=0; max=arr.length-1; while(min<=max){ mid=(max+min)>>1; if(key>arr[mid]){ min=mid+1; }else if(key<arr[mid]){ max=mid-1; }else{ return mid; } } return -1; } //6 数组反转 function reverseArray(arr){ for(var start=0,end=arr.length-1; start<end; start++,end--){ swap(arr,start,end); } }调用:
<!DOCTYPE html> <html> <head> </head> <body> <script type="text/javascript" src="functions.js"> </script> <script type="text/javascript"> //1 函数调用 var arr=[133,-22,33,43,1211]; var mValue = getMax(arr); //alert("mValue="+ mValue); //2函数调用 document.write("排序前:"+arr +"<br>"); // println(arr); sortArray(arr); document.write("排序后:"+arr); //3 函数调用 println(""); println(arr); //4 函数调用 var a=searchElement(arr,133); //alert(a); //5 函数调用 var b=binarySearch(arr,-2); //alert(b); //6 函数调用 reverseArray(arr); println(arr); </script> </body> </html>
版权声明:本文为博主原创文章,未经博主允许不得转载。