在了解了函數的定義和函數調用外,下面我們來介紹一下JavaScript中幾種特殊的函數。
JavaScript特殊函數有3種:
下面詳細給大家講解一下這3中函數調用方式。
嵌套函數,顧名思義,就是在一個函數的內部定義另外一個函數。不過在內部定義的函數只能在內部調用,如果在外部調用,就會出錯。
舉例:
在線測試
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<script type="text/javascript">
//定義階乘函數
function fun(a)
{
//嵌套函數定義,計算平方值的函數
function multi (x)
{
return x*x;
}
var m=1;
for(var i=1;i<=multi(a);i++)
{
m=m*i;
}
return m;
}
var sum =fun(2)+fun(3);
document.write(sum);
</script>
</head>
<body>
</body>
</html>
在浏覽器預覽效果如下:
分析:
上面定義的multi函數只能在fun函數內部使用,如果在fun函數外部調用就會出錯,大家可以在“在線測試”中自己修改代碼測試一下。
遞歸函數是一種非常重要的編程技術,當年我在學習其他編程技術(如C、C++、Java等)都經常用到。
遞歸函數用於讓一個函數從其內部調用其本身。不過需要注意的是,如果遞歸函數處理不當,就會使程序陷入“死循環”。為了防止“死循環”的出現,可以設計一個做自加運算的變量,用於記錄函數自身調用的次數,如果次數太多就讓它自動退出循環。
語法:
function 遞歸函數名(參數1)
{
遞歸函數名(參數2)
}
說明:
在定義遞歸函數時,需要2個必要條件:
(1)首先包括一個結束遞歸的條件;
(2)其次包括一個遞歸調用的語句;
舉例:
在線測試
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<script type="text/javascript">
var msg="\n函數的遞歸調用:\n\n";
//響應按鈕的點擊事件
function Test()
{
var result;
msg+="調用語句:\n";
msg+=" result=sum(20);\n";
msg+="調用步驟:\n";
result=sum(20);
msg+="計算結果:\n";
msg+=" result="+result+"\n";
alert(msg);
}
//計算當前步驟加和值
function sum(m)
{
if(m==0)
{
return 0;
}
else
{
msg+=" result="+m+"+sum("+(m-2)+ ");\n";
result=m+sum(m-2);
}
return result;
}
</script>
</head>
<body>
<input type="button" value="測試" onclick="Test()"/>
</body>
</html>
在浏覽器預覽效果如下:
分析:
在上述代碼中,為了求取20以內的偶數和,定義了遞歸函數sum(m),而函數Test()對其進行調用,並使用alert()方法彈出相應的提示信息。
遞歸函數對於初學者來說可能比較難以理解,如果實在不會,可以直接忽略它。因為在JavaScript中是比較少用到遞歸函數的,遞歸函數往往都是在其他編程語言中用得比較多。到時候需要的時候我們回來翻翻就OK了。
JavaScript中有2種函數:一種是用戶自定義函數,另外一種是JavaScript語言內部已經定義好了,可以直接供我們調用的函數(也就是內置函數)。
內置函數由於已經在JavaScript語言內部定義好了的,也就是我們不需要自己定義就能用了。這樣極大方便了我們的編程。
關於JavaScript內置函數,我們在下一章詳細為大家講解。