《JavaScript程序設(shè)計(jì)》課件第4章_第1頁(yè)
《JavaScript程序設(shè)計(jì)》課件第4章_第2頁(yè)
《JavaScript程序設(shè)計(jì)》課件第4章_第3頁(yè)
《JavaScript程序設(shè)計(jì)》課件第4章_第4頁(yè)
《JavaScript程序設(shè)計(jì)》課件第4章_第5頁(yè)
已閱讀5頁(yè),還剩28頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、第第4章函數(shù)章函數(shù) 在進(jìn)行復(fù)雜的程序設(shè)計(jì)時(shí),通常是根據(jù)所要實(shí)現(xiàn)的功能將程序劃分為一些相對(duì)獨(dú)立的部分,每個(gè)部分編寫成一個(gè)函數(shù),從而使任務(wù)單一、結(jié)構(gòu)清晰,程序易于閱讀、理解和維護(hù)。JavaScript中的函數(shù)將一些共享的程序代碼獨(dú)立出來(lái),能夠傳遞參數(shù)并返回執(zhí)行的結(jié)果。在程序中可以通過(guò)使用函數(shù)名來(lái)調(diào)用函數(shù)。 在JavaScript中有兩種函數(shù),即JavaScript內(nèi)置的系統(tǒng)函數(shù)和用戶自定義的函數(shù)。 函數(shù)是完成特定任務(wù)的語(yǔ)句段。當(dāng)需要重復(fù)執(zhí)行某種任務(wù)時(shí),就應(yīng)把相應(yīng)的語(yǔ)句組織成函數(shù),這樣,在JavaScript程序的任何位置都可以通過(guò)引用函數(shù)名來(lái)執(zhí)行函數(shù)。程序員可以在程序中建立多個(gè)函數(shù),這有利于組織應(yīng)

2、用程序的結(jié)構(gòu),使程序代碼的維護(hù)與修改更容易。第第4章函數(shù)章函數(shù) 4.1函函 數(shù)數(shù) 概概 述述 4.1.1定義函數(shù) 在JavaScript中使用函數(shù)前,需要先對(duì)其進(jìn)行定義。函數(shù)的定義要使用function關(guān)鍵字,其語(yǔ)法格式如下所示(方括號(hào)“ ”中的內(nèi)容為可選項(xiàng)):function 函數(shù)名(參數(shù)列表) 語(yǔ)句return語(yǔ)句 第第4章函數(shù)章函數(shù) 4.1函函 數(shù)數(shù) 概概 述述 在定義函數(shù)時(shí),需要注意以下事項(xiàng):(1)函數(shù)名必須唯一,且區(qū)分大小寫。(2)參數(shù)可以是常量、變量和表達(dá)式。(3)參數(shù)列表中有多個(gè)參數(shù)時(shí),參數(shù)間以逗號(hào)“,”隔開。(4)若函數(shù)需要返回值,則使用return語(yǔ)句。(5)定義函數(shù)并不會(huì)執(zhí)

3、行組成函數(shù)的語(yǔ)句,只有調(diào)用函數(shù)時(shí),函數(shù)才會(huì)執(zhí)行。(6)如果省略了return語(yǔ)句中的表達(dá)式,或函數(shù)中沒有return語(yǔ)句,函數(shù)就會(huì)返回一個(gè)undefined值。第第4章函數(shù)章函數(shù) 4.1函函 數(shù)數(shù) 概概 述述 在函數(shù)的定義中可以看到函數(shù)名后有一個(gè)參數(shù)列表,其中可以有一個(gè)或者幾個(gè)參數(shù)。那么怎樣確定參數(shù)的個(gè)數(shù)呢?在JavaScript中,可以通過(guò)使用arguments.length屬性來(lái)檢查參數(shù)的個(gè)數(shù)。例如: function function_Name(exp1,exp2,exp3,exp4) 使用arguments.length屬性檢查參數(shù)的個(gè)數(shù) number=function_Name.ar

4、guments.length; if(number1)document.write(exp2); if(number2)document.write(exp3); if(number3)document.write(exp4); 參看例4-1第第4章函數(shù)章函數(shù) 4.1函函 數(shù)數(shù) 概概 述述 4.1.2調(diào)用函數(shù) 通常可以在文檔的頭部定義函數(shù),以便在裝載HTML文檔時(shí)首先載入函數(shù)。如果函數(shù)沒有返回值或者調(diào)用程序不關(guān)心函數(shù)的返回值,可以使用下面的語(yǔ)法格式調(diào)用已經(jīng)定義的函數(shù):函數(shù)名(傳遞給函數(shù)的參數(shù)1,傳遞給函數(shù)的參數(shù)2,傳遞給函數(shù)的參數(shù)n);參看例4-1、例4-2、例4-3.第第4章函數(shù)章函數(shù) 4.

5、1函函 數(shù)數(shù) 概概 述述 變量是程序中一個(gè)已經(jīng)命名的存儲(chǔ)單元,主要用于為數(shù)據(jù)操作提供存放信息的容器。在程序中,變量存儲(chǔ)的數(shù)值是可以變化的。根據(jù)變量的作用域,可以將變量分為全局變量和局部變量?jī)煞N。第第4章函數(shù)章函數(shù) 4.2全局變量和局部變量全局變量和局部變量 4.2.1全局變量 在函數(shù)之外聲明的變量叫做全局變量。例如:var x=5; 定義全局變量xfunction myFunction() document.write(在函數(shù)體外:); 顯示提示信息document.write(x=+x+); 輸出此時(shí)x的值 第第4章函數(shù)章函數(shù) 4.2全局變量和局部變量全局變量和局部變量 4.2.2局部變量

6、在函數(shù)內(nèi)聲明的變量叫做局部變量。例如:function myFunction() document.write(在函數(shù)體內(nèi):); 顯示提示信息x=7; 定義局部變量xdocument.write(x=+x+); 輸出此時(shí)x的值 第第4章函數(shù)章函數(shù) 4.2全局變量和局部變量全局變量和局部變量 4.2.3變量的作用域變量的作用域 變量的一個(gè)重要屬性就是變量的作用域。 全局變量的作用域是此變量定義后的所有語(yǔ)句,包括其后定義的函數(shù)和中的代碼。 局部變量作用于函數(shù)內(nèi)部,只對(duì)其所在的函數(shù)體有效,在此函數(shù)后的其他函數(shù)中定義的同名變量與此變量毫無(wú)關(guān)系,且以最后一個(gè)定義的變量的值為準(zhǔn)。在下面的例子中建立了兩個(gè)函

7、數(shù),以說(shuō)明全局變量和局部變量的作用域。參看例4-5.第第4章函數(shù)章函數(shù) 4.2全局變量和局部變量全局變量和局部變量 4.2.4使用局部變量避免沖突 如果函數(shù)中定義了與全局變量同名的局部變量,則在此函數(shù)中位于此變量定義之后的腳本代碼使用的是局部變量,而不是全局變量。此時(shí),全局變量被局部變量覆蓋,不再起作用。因此,在定義變量的時(shí)候,為了避免發(fā)生不必要的沖突,提倡使用局部變量。下面是一個(gè)使用局部變量避免沖突的示例。參看例4-6.第第4章函數(shù)章函數(shù) 4.2全局變量和局部變量全局變量和局部變量 在函數(shù)的定義中,函數(shù)名后的參數(shù)表中可以有一個(gè)或多個(gè)參數(shù),也可以沒有參數(shù),這需要根據(jù)實(shí)際應(yīng)用確定。第第4章函數(shù)章

8、函數(shù) 4.3函數(shù)參數(shù)的使用函數(shù)參數(shù)的使用 4.3.1給函數(shù)添加參數(shù) 在4.1節(jié)中已介紹了簡(jiǎn)單函數(shù)的定義及調(diào)用形式,這里介紹如何在函數(shù)中使用參數(shù)。定義函數(shù)時(shí)指定的參數(shù)稱為形式參數(shù),簡(jiǎn)稱形參;調(diào)用函數(shù)時(shí)實(shí)際傳遞的值稱為實(shí)際參數(shù),簡(jiǎn)稱實(shí)參。 定義帶參數(shù)的函數(shù)的語(yǔ)法格式如下:function函數(shù)名(形參1,形參2,形參n)函數(shù)體調(diào)用帶參數(shù)的函數(shù)的語(yǔ)法格式如下: 函數(shù)名(實(shí)參1,實(shí)參2,實(shí)參n)下面的例子定義了一個(gè)帶有參數(shù)的Show函數(shù),它把參數(shù)text中的字符串顯示在Web頁(yè)面上。參看例4-7.第第4章函數(shù)章函數(shù) 4.3函數(shù)參數(shù)的使用函數(shù)參數(shù)的使用 4.3.2使用多個(gè)參數(shù) 如果函數(shù)帶有多個(gè)參數(shù),調(diào)用函

9、數(shù)時(shí)實(shí)參按照形參排列的順序依次傳遞給函數(shù)中定義的相應(yīng)的形參。參看例4-8.第第4章函數(shù)章函數(shù) 4.3函數(shù)參數(shù)的使用函數(shù)參數(shù)的使用 4.3.3使用參數(shù)數(shù)組 函數(shù)中的arguments參數(shù)數(shù)組包含了傳遞給當(dāng)前函數(shù)的每個(gè)參數(shù),如argumentsi或functionName.argumentsi,其中,i是一個(gè)序列數(shù),其值從零開始計(jì)數(shù),因此,傳遞給函數(shù)的第一個(gè)參數(shù)應(yīng)是arguments0。 通過(guò)設(shè)置arguments的屬性,函數(shù)可以很好地處理數(shù)量可變的參數(shù)。當(dāng)不知道將有多少個(gè)參數(shù)傳遞給函數(shù)時(shí),arguments參數(shù)數(shù)組可以用arguments.length屬性確定實(shí)際傳遞給函數(shù)的參數(shù)數(shù)量。參看例4-

10、9.第第4章函數(shù)章函數(shù) 4.3函數(shù)參數(shù)的使用函數(shù)參數(shù)的使用 在JavaScript中,有的函數(shù)有返回值,有的沒有返回值(返回值是空)。本節(jié)對(duì)函數(shù)返回值的相關(guān)知識(shí)進(jìn)行簡(jiǎn)單介紹。 4.4.1給函數(shù)添加返回值 在JavaScript中,可以使用return語(yǔ)句返回函數(shù)的值,其語(yǔ)法格式如下: 參看例4-10. return 表達(dá)式; 4.4.2區(qū)分函數(shù)和過(guò)程 在JavaScript中,把只返回undefined值的函數(shù)稱為過(guò)程。函數(shù)和過(guò)程的區(qū)別是過(guò)程調(diào)用單獨(dú)使用一條語(yǔ)句,而函數(shù)調(diào)用則可以出現(xiàn)在表達(dá)式中。 參看例4-11.第第4章函數(shù)章函數(shù) 4.4使用函數(shù)返回值使用函數(shù)返回值 在其他語(yǔ)言(如C語(yǔ)言)中,

11、可以定義指向函數(shù)的指針,也就是可以定義一個(gè)指針變量來(lái)指向某個(gè)函數(shù),以后就可以用這個(gè)指針變量來(lái)調(diào)用其指向的函數(shù)。JavaScript也提供了類似的技術(shù),稱為創(chuàng)建動(dòng)態(tài)函數(shù)。 4.5.1使用Function對(duì)象創(chuàng)建動(dòng)態(tài)函數(shù) 創(chuàng)建一個(gè)動(dòng)態(tài)函數(shù)需要使用Function對(duì)象,其語(yǔ)法格式為: var 變量名=new Function(參數(shù)列表);其中,參數(shù)列表中的所有參數(shù)都必須是字符串型,最后一個(gè)參數(shù)是這個(gè)動(dòng)態(tài)函數(shù)的功能程序代碼。參看例4-12.第第4章函數(shù)章函數(shù) 4.5創(chuàng)建動(dòng)態(tài)函數(shù)創(chuàng)建動(dòng)態(tài)函數(shù) 4.5.2動(dòng)態(tài)函數(shù)與函數(shù)直接量 動(dòng)態(tài)函數(shù)和函數(shù)直接量之間存在以下差別: 首先,動(dòng)態(tài)函數(shù)允許在運(yùn)行時(shí)動(dòng)態(tài)創(chuàng)建和執(zhí)行

12、JavaScript代碼;而函數(shù)直接量是程序結(jié)構(gòu)的一個(gè)靜態(tài)部分,就像函數(shù)語(yǔ)句一樣。 其次,每次調(diào)用動(dòng)態(tài)函數(shù)時(shí)都會(huì)解析函數(shù)體,并且創(chuàng)建一個(gè)新的函數(shù)對(duì)象,因此,如果對(duì)構(gòu)造函數(shù)的調(diào)用出現(xiàn)在一個(gè)循環(huán)或一個(gè)經(jīng)常被調(diào)用的函數(shù)中,這種方法的效率將非常低;函數(shù)直接量不論出現(xiàn)在循環(huán)中還是出現(xiàn)在嵌套函數(shù)中,都不會(huì)在每次調(diào)用時(shí)被重新解析,也不會(huì)每次都創(chuàng)建一個(gè)新的函數(shù)對(duì)象,從而提高了程序的執(zhí)行效率。最后,動(dòng)態(tài)函數(shù)總是被當(dāng)作頂級(jí)函數(shù)來(lái)編譯。第第4章函數(shù)章函數(shù) 4.5創(chuàng)建動(dòng)態(tài)函數(shù)創(chuàng)建動(dòng)態(tài)函數(shù) 在JavaScript中,不僅可以使用自定義函數(shù),還可以使用JavaScript提供的系統(tǒng)函數(shù)(也稱為內(nèi)部方法)來(lái)實(shí)現(xiàn)某些功能。本

13、節(jié)對(duì)JavaScript中的常用系統(tǒng)函數(shù)進(jìn)行簡(jiǎn)單介紹。第第4章函數(shù)章函數(shù) 4.6JavaScript的系統(tǒng)函數(shù)的系統(tǒng)函數(shù) 4.6.1URI編碼處理函數(shù) URL(Uniform Resource Locator,統(tǒng)一資源定位符)是最常用的一種URI(Universal Resource Identifier,通用資源標(biāo)識(shí)符)。URI比URL表示的范圍更大,不僅限于描述Internet資源的地址,還包括數(shù)字對(duì)象標(biāo)識(shí)符和國(guó)際標(biāo)準(zhǔn)書號(hào)等標(biāo)識(shí)名稱。 JavaScript主要包括兩個(gè)編碼函數(shù):encodeURI和decodeURI。第第4章函數(shù)章函數(shù) 4.6JavaScript的系統(tǒng)函數(shù)的系統(tǒng)函數(shù) 1.e

14、ncodeURI函數(shù) encodeURI函數(shù)返回對(duì)某個(gè)URI字符串編碼后的結(jié)果。其語(yǔ)法格式如下: encodeURI(URIString);其中,URIString是必選項(xiàng),代表一個(gè)要編碼的URI字符串。參看例4-13. 2.decodeURI函數(shù) 與encodeURI函數(shù)相反,decodeURI函數(shù)將一個(gè)已編碼的URI字符串解碼成原始的字符串并返回。其語(yǔ)法格式如下: decodeURI(URIstring);其中,URIstring是必須有的,表示一個(gè)要解碼的URI字符串。參看例4-14.第第4章函數(shù)章函數(shù) 4.6JavaScript的系統(tǒng)函數(shù)的系統(tǒng)函數(shù) 4.6.2數(shù)值處理函數(shù) JavaSc

15、ript中的數(shù)值處理函數(shù)主要有parseInt、parseFloat和isNaN。1.parseInt 函數(shù) parseInt函數(shù)將一個(gè)字符串按照指定的進(jìn)制轉(zhuǎn)換成一個(gè)整數(shù),其語(yǔ)法格式為: parseInt(numstring,radix)第第4章函數(shù)章函數(shù) 4.6JavaScript的系統(tǒng)函數(shù)的系統(tǒng)函數(shù) 其中,第一個(gè)參數(shù)是要進(jìn)行轉(zhuǎn)換的字符串;第二個(gè)參數(shù)為可選項(xiàng),是介于236之間的一個(gè)數(shù)值,用于指定字符串轉(zhuǎn)換所用的進(jìn)制類型。如果未指定第二個(gè)參數(shù),則前綴為“0 x”的字符串被視為十六進(jìn)制數(shù),前綴為“0”的字符串被視為八進(jìn)制數(shù),所有其他字符串都被視為十進(jìn)制數(shù)。 如果要轉(zhuǎn)換的字符串中包含無(wú)法轉(zhuǎn)換成數(shù)字

16、的字符,那么parseInt函數(shù)只對(duì)字符串中的數(shù)字部分進(jìn)行轉(zhuǎn)換,如parseInt(“12abc”)的返回結(jié)果為12。如果parseInt函數(shù)完全無(wú)法將一個(gè)字符串中的第一個(gè)字符轉(zhuǎn)換成數(shù)字,將返回NaN。NaN需要使用isNaN方法才能檢測(cè)出來(lái)。參看例4-15.第第4章函數(shù)章函數(shù) 4.6JavaScript的系統(tǒng)函數(shù)的系統(tǒng)函數(shù) 2.parseFloat函數(shù) parseFloat函數(shù)用于將一個(gè)字符串轉(zhuǎn)換成對(duì)應(yīng)的浮點(diǎn)數(shù)。其語(yǔ)法格式如下:參看例4-16. parseFloat(string);其中,string是必須有的,表示要解析的字符串。3.isNaN函數(shù) isNaN函數(shù)可以用于檢測(cè)parseIn

17、t和parseFloat函數(shù)的返回值是否為NaN,如果是,則返回值為true,否則返回false。其語(yǔ)法格式如下:參看例4-17. isNaN(x);其中,x是必須有的,表示要檢測(cè)的值。第第4章函數(shù)章函數(shù) 4.6JavaScript的系統(tǒng)函數(shù)的系統(tǒng)函數(shù) 4.6.3字符串編碼處理函數(shù) 字符串編碼處理函數(shù)在JavaScript傳遞參數(shù)的過(guò)程中起到了很重要的作用,使用字符串編碼處理函數(shù),可以有效防止數(shù)據(jù)泄露。 這里主要介紹3個(gè)JavaScript字符串編碼處理函數(shù):escape、unescape和eval。第第4章函數(shù)章函數(shù) 4.6JavaScript的系統(tǒng)函數(shù)的系統(tǒng)函數(shù) 1.escape函數(shù) es

18、cape函數(shù)返回對(duì)一個(gè)字符串編碼后的結(jié)果字符串,其中,所有空格、標(biāo)點(diǎn)、重音符號(hào)以及任何其他非ASCII碼字符都用%xx(xx等于該字符對(duì)應(yīng)的Unicode編碼的十六進(jìn)制數(shù))格式的編碼替換,例如,空格返回為%20。值大于255的字符以%uxxxx格式存儲(chǔ)。escape函數(shù)的語(yǔ)法格式如下: escape(string);其中,string是要被轉(zhuǎn)義或編碼的字符串。 需要說(shuō)明的是,對(duì)URI的編碼不要使用escape函數(shù),而應(yīng)使用encodeURI函數(shù)。參看例4-18.第第4章函數(shù)章函數(shù) 4.6JavaScript的系統(tǒng)函數(shù)的系統(tǒng)函數(shù) 2.unescape函數(shù) unescape函數(shù)將一個(gè)用escape

19、函數(shù)編碼的字符串解碼成原始字符串并返回。其語(yǔ)法格式如下: unescape(string); 其中,string是必須有的,表示要解碼或反轉(zhuǎn)義的字符串。參看例4-19.第第4章函數(shù)章函數(shù) 4.6JavaScript的系統(tǒng)函數(shù)的系統(tǒng)函數(shù) 3.eval 函數(shù)eval函數(shù)將某個(gè)字符串參數(shù)作為一個(gè)JavaScript表達(dá)式執(zhí)行。如果想在運(yùn)行時(shí)修改變量的名稱,則可以使用eval函數(shù)實(shí)現(xiàn)此功能。其語(yǔ)法格式如下: eval(codeString);其中,codeString是包含JavaScript語(yǔ)句的字符串,例如:for(var i=0;in;i+)eval(var a+i+=+i);第第4章函數(shù)章函數(shù) 4.6JavaScript的系統(tǒng)函數(shù)的系統(tǒng)函數(shù)上面這段代碼定義了n個(gè)變量,變量名分別為a0,a1,an,相當(dāng)于在JavaScript中直接編寫如下代

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論