Day04 Day05 函數(shù)

函數(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í)行腳本,遇到錯誤時中斷。

應用

  1. 編寫一個函數(shù),計算兩個數(shù)字的和、差、積、商(要求:使用傳參的形式)
  2. 編寫一個函數(shù),計算三個數(shù)字的大小,按從小到大順序輸出。
  3. 編寫任意個數(shù)字的求和的函數(shù)
  4. 編寫生成4位數(shù)字驗證碼的函數(shù),并生成10次,同時將結(jié)果存入數(shù)組
  5. 函數(shù)和循環(huán)結(jié)合打印九九乘法表

綜合應用

  1. 某個公司采用公用電話傳遞數(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);
    }
}

綜合應用

  1. 編寫一個函數(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.
  2. 使用函數(shù)完成任意數(shù)字階乘的計算
    要求:頁面輸入任意數(shù)字,點擊按鈕后計算階乘.

通過一些符號將函數(shù)體轉(zhuǎn)換成表達式。最好的方式添加();
函數(shù)不調(diào)用,相當于不存在。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

  • 函數(shù)和對象 1、函數(shù) 1.1 函數(shù)概述 函數(shù)對于任何一門語言來說都是核心的概念。通過函數(shù)可以封裝任意多條語句,而且...
    道無虛閱讀 4,957評論 0 5
  • 函數(shù)參數(shù)的默認值 基本用法 在ES6之前,不能直接為函數(shù)的參數(shù)指定默認值,只能采用變通的方法。 上面代碼檢查函數(shù)l...
    呼呼哥閱讀 3,708評論 0 1
  • 官方中文版原文鏈接 感謝社區(qū)中各位的大力支持,譯者再次奉上一點點福利:阿里云產(chǎn)品券,享受所有官網(wǎng)優(yōu)惠,并抽取幸運大...
    HetfieldJoe閱讀 6,692評論 3 22
  • 今天六點半起床,打卡晚了23分鐘,今早第一件事就是被書濤助教提醒要把本周小組會流程整理發(fā)出來,今天都已經(jīng)禮拜四了,...
    星鑠閱讀 242評論 0 0
  • 文丨丁客 這兩天有人問過我這樣一個問題:我在大學應該學習什么?只是學專業(yè)課就可以嗎? 我這幾天回憶了一下我的大學生...
    徐策的投資筆記閱讀 2,026評論 0 2

友情鏈接更多精彩內(nèi)容