函數(shù)的概念及作用
函數(shù)可以封裝任意多條語句, 而且可以在任何地方、任何時候調(diào)用執(zhí)行。
JS中的函數(shù)也是對象,所以JS函數(shù)可以像其它對象那樣操作和傳遞,我們也常叫JS中的函數(shù) 為函數(shù)對象。
函數(shù)的編寫
ECMAScript 中的函數(shù)使用 function 關(guān)鍵字來聲明,后跟一組參數(shù)以及函數(shù)體。
普通函數(shù)聲明
函數(shù)表達式:函數(shù)賦值給變量(匿名函數(shù)、自執(zhí)行函數(shù)、事件處理函數(shù))
函數(shù)的好處
函數(shù)是用來幫助我們封裝、重用、擴展及調(diào)用代碼的最方便的工具!
事件的概念種類及作用
事件,就是文檔或瀏覽器窗口中發(fā)生的一些特定的交互瞬間??梢允褂脗陕犉鳎ɑ蛱幚沓绦颍﹣眍A訂事件,以便事件發(fā)生時執(zhí)行相應的代碼。
事件類型
- 焦點事件,當元素獲得或失去焦點時觸發(fā);(表單)
- 鼠標事件,當用戶通過鼠標在頁面上執(zhí)行操作時觸發(fā);
- 鍵盤事件,當用戶通過鍵盤在頁面上執(zhí)行操作時觸發(fā);
事件和函數(shù)的關(guān)系,以及綜合應用(事件處理函數(shù)
)
參數(shù)的聲明
函數(shù)的參數(shù)包括形參和實參,函數(shù)不介意傳遞進來多少參數(shù),也不會因為參數(shù)不統(tǒng)一而錯誤。實際上,函數(shù)體內(nèi)可以通過 arguments 對象來接收傳遞進來的參數(shù)(實參)
參數(shù)的傳遞:實參傳遞給形參
JS的編譯和執(zhí)行
JS的解析過程分為兩個階段:預編譯期(預處理)與執(zhí)行期。
預編譯期JS會對本代碼塊(script)中的所有聲明的變量和函數(shù)進行處理(類似與C語言的編譯), 但需要注意的是此時處理函數(shù)的只是聲明式函數(shù),而且變量也只是進行了聲明但未進行初始化 以及賦值。執(zhí)行期就是在編譯后的基礎上開始從上到下執(zhí)行腳本,遇到錯誤時中斷。
應用
- 編寫一個函數(shù),計算兩個數(shù)字的和、差、積、商(要求:使用傳參的形式)
- 編寫一個函數(shù),計算三個數(shù)字的大小,按從小到大順序輸出。
- 編寫任意個數(shù)字的求和的函數(shù)
- 編寫生成4位數(shù)字驗證碼的函數(shù),并生成10次,同時將結(jié)果存入數(shù)組
- 函數(shù)和循環(huán)結(jié)合打印九九乘法表
綜合應用
- 某個公司采用公用電話傳遞數(shù)據(jù),數(shù)據(jù)是四位的整數(shù),在傳遞過程中是加密的,加密規(guī)則 如下:每位數(shù)字都加上5,然后用除以10的余數(shù)代替該數(shù)字,再將第一位和第四位交換,第 二位和第三位交換,請編寫一個函數(shù),傳入原文,輸出密文。
作用域
任何程序設計語言都有作用域的概念,簡單的說,作用域就是變量與函數(shù)的可訪問范圍,即作用域控制著變量與函數(shù)的可見性和生命周期。
局部作用域和全局作用域(全局變量和局部變量)
在JavaScript中,變量的作用域有全局作用域和局部作用域兩種。
全局作用域(變量):整個程序都有效,即整個代碼中都可以調(diào)用。
局部作用域(變量):只對函數(shù)內(nèi)部有效,即只能在本變量聲明的函數(shù)內(nèi)部調(diào)用。
在函數(shù)體內(nèi),局部變量的優(yōu)先級高于同名的全局變量。
遞歸函數(shù)
遞歸函數(shù)是在一個函數(shù)通過名字調(diào)用自身情況下構(gòu)成的
遞歸函數(shù)就函數(shù)內(nèi)部調(diào)用函數(shù)本身。
應用
1. 利用遞歸求100的階乘。
function jc(n){//n:5
if(n<=1){
return 1;
}else{
return n*jc(n-1);
}
}
2. 利用遞歸求斐波那契數(shù)列的前20項。
function fb(n){
if(n==1 || n==2){
return 1;
}else{
return fb(n-1)+fb(n-2);
}
}
3. 利用遞歸求兩個數(shù)字的最大公約數(shù)
function gys(m,n){
var r=m%n;
m=n;
n=r;
if(r==0){
return m;
}else{
return gys(m,n);
}
}
綜合應用
- 編寫一個函數(shù),輸入n為偶數(shù)時,調(diào)用函數(shù)求1/2+1/4+1/6...+1/n,當輸入n為奇數(shù)時, 調(diào)用函數(shù)求1+1/3+1/5...+1/n.
- 使用函數(shù)完成任意數(shù)字階乘的計算
要求:頁面輸入任意數(shù)字,點擊按鈕后計算階乘.
通過一些符號將函數(shù)體轉(zhuǎn)換成表達式。最好的方式添加();
函數(shù)不調(diào)用,相當于不存在。