JavaScript之 ------ 函數(一般函數、動態函數、匿名函數)
函數
一、一般函數
1、格式:
function 函數名(形式參數...)
{
執行語句;
return 傳回值;
}
函數是多條執行語句的封裝體,只有被調用才會被運行。
注意:調用有參數的函數,但沒有給其傳值,函數一樣可以運行,或者調用沒有參數的函數,給其傳值,該函數也一樣運行。
說的簡單點:只要寫了函數名後面跟了一對小括弧,該函數就會運行。
2、函數雖然定義時是聲明成兩個參數,但調用時卻是可以傳入任意個
例:
function show(x,y){ alert(x+:+y); }show(4,8); 結果:4:8
show(4);結果:4:undefined
show(); 結果:undefined:undefined
show(4,8,89); 結果:4:8
綜上的例子,Js當中的函數是不存在重載的。如果有,一定就通配所有的了。
3、每個函數中,存在一個 預設的數組arguments ,裡面儲存著本次調用時傳入的所有實參
function show2(x,y){ for(var i=0; i結果:1 2 3 45
4、函數在調用時的其他寫法
<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>
二、動態函數
利用Js當中內建的對象Function來構造一個函數,構造方法中的第1個參數是“形參”,第2個參數是“函數體”。
該思想類似於Java當中的類反射。我們平時寫函數時通常不用,但關鍵的地方一寫,整個程式的功能會變得很活。
var add = new Function(x,y, var sum; sum=x+y;return sum;);var s = add(100,39);alert(s=+s);
三、匿名函數
格式: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; xarr[max]){ max = x; } } return arr[max]; } //2 數組排序 //函數定義 function sortArray(arr){ for(var x=0; xarr[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 +); } //4 在數組當中尋找元素(若存在則返回該元素的位置,否則返回-1) function searchElement(arr,key){ for(var x=0; x>1; if(key>arr[mid]){ min=mid+1; }else if(key調用:<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 +
); // 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>