




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
函數(shù)(function)是指實(shí)現(xiàn)某項(xiàng)單一功能的,可重復(fù)使用的程序段。
JavaScript語法基礎(chǔ)
函數(shù)目錄
JavaScript程序設(shè)計(jì)基礎(chǔ)7.1JavaScript概述7.2在HTML文檔中使用JavaScript7.3數(shù)據(jù)類型7.4標(biāo)識符、變量和常量7.5運(yùn)算符和表達(dá)式7.6流程控制7.7函數(shù)7.8正則表達(dá)式習(xí)題77.7函數(shù)7.7.1函數(shù)的聲明1.聲明函數(shù)(Functiondeclaration)語法格式如下:function函數(shù)名(參數(shù)1,參數(shù)2,…){
函數(shù)體語句塊;return返回值;}7.7函數(shù)【例7-20】聲明兩個(gè)數(shù)的乘法函數(shù)multiple。本例文件7-20.html。<scripttype="text/javascript">
functionmultiple(number1,number2){varresult=number1*number2;returnresult;//函數(shù)有返回值
}varresult=multiple(20,30);//調(diào)用有返回值的函數(shù)
document.write(result);//顯示:600document.write("<br>");
document.write(multiple(2,3));//調(diào)用函數(shù),顯示:6</script>7.7函數(shù)2.聲明函數(shù)表達(dá)式(FunctionExpression)(1)把函數(shù)表達(dá)式直接賦值給變量格式如下:var變量名=function(參數(shù)1,參數(shù)2,…){//函數(shù)體語句塊;return返回值;}7.7函數(shù)【例7-21】聲明函數(shù)表達(dá)式示例。本例文件7-21.html。<scripttype="text/javascript">varmultiple=function(number1,number2){varresult=number1*number2;returnresult;//函數(shù)有返回值
}varresult=multiple(20,30);//調(diào)用有返回值的函數(shù)
document.write(result);//顯示:600document.write("<br>");//換行
document.write(multiple(2,3));//調(diào)用函數(shù),顯示:6</script>7.7函數(shù)(2)網(wǎng)頁事件直接調(diào)用函數(shù)表達(dá)式格式為:window.onload=function(參數(shù)1,參數(shù)2,…){//函數(shù)體語句塊;return返回值;}7.7函數(shù)(3)自執(zhí)行函數(shù)如果表達(dá)式后面緊跟(),則會(huì)自動(dòng)調(diào)用執(zhí)行。【例7-22】自執(zhí)行函數(shù)示例。本例文件7-22.html在瀏覽器中顯示如圖7-23所示。<scripttype="text/javascript">(function(){varx="Hello!!";document.write(x+"<br>");})();//自調(diào)用無參函數(shù),將調(diào)用自己,自動(dòng)執(zhí)行
(function(x,y){document.write(x+y+"<br>");
})(2,3);//自調(diào)用有參函數(shù)
varsum=(function(x,y){returnx+y;
})(5,6);//自調(diào)用有參函數(shù)帶返回值
document.write(sum);</script>7.7函數(shù)7.7.2函數(shù)的調(diào)用1.直接調(diào)用函數(shù)用下面的格式調(diào)用定義的函數(shù):函數(shù)名(傳遞給函數(shù)的參數(shù)1,傳遞給函數(shù)的參數(shù)2,…);調(diào)用函數(shù)時(shí)的參數(shù)取決于聲明該函數(shù)時(shí)的參數(shù),如果定義時(shí)有參數(shù),就需要增加實(shí)參。7.7函數(shù)【例7-23】直接調(diào)用函數(shù)示例。本例文件7-23.html在瀏覽器中顯示如圖7-24所示。<scripttype="text/javascript">functionhello(name){alert("Hello"+name+"!");}varhi=prompt("輸入名字:")
hello(hi);//調(diào)用函數(shù)</script>7.7函數(shù)2.在表達(dá)式中調(diào)用函數(shù)變量名=函數(shù)名(傳遞給函數(shù)的參數(shù)1,傳遞給函數(shù)的參數(shù)2,…);例如,result=multiple(10,20);。對于有返回值的函數(shù)調(diào)用,也可以將其寫在表達(dá)式中,直接利用其返回的值。例如:document.write(multiple(10,20));7.7函數(shù)3.在事件中調(diào)用函數(shù)<標(biāo)簽屬性="屬性值"…事件="函數(shù)名(參數(shù)表)"></標(biāo)簽>例如,使用<a>標(biāo)記的單擊事件onClick調(diào)用函數(shù),其代碼形式為:<ahref="#"onClick="函數(shù)名(參數(shù)表)">熱點(diǎn)文本</a>7.7函數(shù)【例7-24】本例中的hello()函數(shù)顯示一個(gè)對話框,當(dāng)網(wǎng)頁加載完成后就調(diào)用一次hello()函數(shù),使用<body>標(biāo)記的onLoad屬性,本例文件7-24.html在瀏覽器中的顯示是先顯示對話框,如圖7-25左圖所示;單擊確定按鈕后,才顯示網(wǎng)頁內(nèi)容,如圖7-25右圖所示。7.7函數(shù)<!DOCTYPEhtml><html><head><metacharset="utf-8"><title>在事件中調(diào)用函數(shù)</title><scripttype="text/javascript">functionhello(){//定義函數(shù)
window.alert("Hello");}</script></head><bodyonLoad="hello();"><!--使用onLoad調(diào)用函數(shù)--><p>網(wǎng)頁內(nèi)容</p></body></html>7.7函數(shù)4.函數(shù)的嵌套調(diào)用(1)嵌套調(diào)用函數(shù)【例7-25】編程序求1+(1+2)+(1+2+3)+...+(1+2+3+…+n)的和。1)首先定義一個(gè)求1+2+3+…+n和的函數(shù)fnSum(num)。functionfnSum(num){ varsum=0,i; for(i=1;i<=num;i++){ sum+=i; } returnsum;}7.6函數(shù)2)然后定義求整個(gè)和的函數(shù)fnAllSum(iNum),在函數(shù)fnAllSum(num)中調(diào)用函數(shù)fnSum(num)。functionfnAllSum(num){ varsum=0,i; for(i=1;i<=num;i++){ sum+=fnSum(i); } returnsum;}3)在主程序中調(diào)用函數(shù)fnAllSum(num)。document.write(fnAllSum(10));//輸出:2207.6函數(shù)4)完成程序如下:<scripttype="text/javascript">functionfnSum(num){varsum=0,i;for(i=1;i<=num;i++){sum+=i;}returnsum;}functionfnAllSum(num){varsum=0,i;for(i=1;i<=num;i++){sum+=fnSum(i);}returnsum;}document.write(fnAllSum(10));//輸出:220</script>7.7函數(shù)(2)遞歸調(diào)用函數(shù)【例7-26】用遞歸求階乘n!。在下面程序中,階乘函數(shù)fnFactorial(num)自己調(diào)用自己,滿足了以上兩點(diǎn)條件,實(shí)現(xiàn)了遞歸。本例文件7-26.html在瀏覽器中的顯示3628800。7.7函數(shù)<scripttype="text/javascript">functionfnFactorial(num){varresult;if(num<=1)result=1;//遞歸結(jié)束的條件,不再遞歸
elseresult=num*fnFactorial(num-1);//遞歸調(diào)用
returnresult;}document.write(fnFactorial(10));//輸出:3628800</script>7.7函數(shù)7.7.3變量的作用域和生命周期1.變量的作用域【例7-27】觀察下面代碼中變量a、b、c、d值的變化。本例文件7-27.html在瀏覽器中的顯示如圖7-26所示。7.6函數(shù)<scripttype="text/javascript">vara=1;//a是全局變量
b=2;//b是全局變量
functiontest(){c=3;//c是全局變量
varb=5,d=6;//b、d是局部變量
document.write("test:",a,"<br>");//test:1document.write("test:",b,"<br>");//test:5document.write("test:",c,"<br>");//test:3document.write("test:",d,"<br>");//test:6a=11;//全局變量a被賦值
b=55;//局部變量b被賦值
}test();document.write(a,"<br>");//顯示全局變量a的值11document.write(b,"<br>");//顯示全局變量b的值2document.write(c,"<br>");//顯示全局變量c的值3document.write(d,"<br>");//出錯(cuò),不顯示</script>7.7函數(shù)2.變量的生命周期變量的生命周期也叫變量的生存期,對于用var關(guān)鍵字在函數(shù)內(nèi)部聲明的變量,當(dāng)退出函數(shù)時(shí),這些局部變量會(huì)隨著函數(shù)調(diào)用的結(jié)束而被銷毀。7.7函數(shù)7.7.4內(nèi)嵌函數(shù)【例7-28】內(nèi)嵌函數(shù)示例,在定義函數(shù)add()的內(nèi)部又定義了一個(gè)函數(shù)plus()。本例文件7-28.html在瀏覽器中的顯示3。<scripttype="text/javascript">functionadd(){//定義函數(shù)add()varcounter=2;//add()函數(shù)內(nèi)部的局部變量counterfunctionplus(){//在函數(shù)add()內(nèi)部定義函數(shù)plus(),內(nèi)嵌函數(shù)
counter+=1;//在內(nèi)嵌函數(shù)plus()內(nèi)部訪問父函數(shù)的局部變量counter}plus();//在函數(shù)add()內(nèi)調(diào)用內(nèi)嵌的函數(shù)plus(),counter變?yōu)?returncounter;//返回counter的值
}document.write(add());//調(diào)用add()函數(shù),顯示:3</script>7.7函數(shù)7.6.5閉包函數(shù)1.閉包的概念【例7-29】閉包函數(shù)示例。本例文件7-29.html在瀏覽器中的顯示50。<scripttype="text/javascript">functionAdd(num1,num2){//外層函數(shù)
varsum=0;//sum外層函數(shù)定義的局部變量
functionDoAdd(){//內(nèi)嵌函數(shù),在函數(shù)add()內(nèi)部定義函數(shù)DoAdd()sum=num1+num2;//在內(nèi)嵌函數(shù)內(nèi)部訪問外層函數(shù)的局部變量num1、num2、sumreturnsum;//返回計(jì)算結(jié)果
}varresultAdd=DoAdd();//在外層函數(shù)中調(diào)用內(nèi)嵌函數(shù)DoAdd()得到結(jié)果,保存到變量中
returnresultAdd;//返回DoAdd()函數(shù)的結(jié)果
}document.write(Add(20,30));//顯示:50</script>7.6函數(shù)2.閉包的原理3.閉包的用途【例7-30】函數(shù)Add()內(nèi)部聲明的函數(shù)DoAdd()是一個(gè)閉包,實(shí)現(xiàn)函數(shù)累加器功能。本例文件7-30.html在瀏覽器中的顯示如圖7-27所示。7.6函數(shù)<scripttype="text/javascript">functionAdd(start){//聲明外層函數(shù)
varcounter=start;//外層函數(shù)定義的局部變量counter,從start開始計(jì)數(shù)
functionDoAdd(){//聲明內(nèi)嵌函數(shù),無參數(shù)傳遞
counter=counter+1;//內(nèi)嵌函數(shù)直接使用外層函數(shù)的局部變量counteralert(counter);//用于調(diào)試時(shí)顯示變量的變化
}returnDoAdd;//外層函數(shù)返回內(nèi)嵌函數(shù)名
}varfn=Add(10);//fn就是DoAdd函數(shù)
fn(1);//第1次調(diào)用fn函數(shù),輸出:11fn(1);//第2次調(diào)用fn函數(shù),輸出:12fn(1);//第3次調(diào)用fn函數(shù),輸出:13</script>7.6函數(shù)7.7函數(shù)7.7.6箭頭函數(shù)在JavaScript中,“=>”用于定義箭頭函數(shù)(ArrowFunction)。1.箭頭函數(shù)的格式箭頭函數(shù)的基本語法格式為:(parameters)=>{statements}如果函數(shù)只接受一個(gè)參數(shù),那么可以省略圓括號:parameter=>{statements}如果函數(shù)體只有一條語句,那么可以省略大括號,并且該語句的結(jié)果將會(huì)被自動(dòng)返回:parameters=>expression7.7函數(shù)以下是一些使用箭頭函數(shù)的示例。1)不帶參數(shù)的箭頭函數(shù):letgreet=()=>{document.write("Hello,World!");};greet();//輸出:"Hello,World!"2)帶一個(gè)參數(shù)的箭頭函數(shù):letdouble=num=>num*2;document.write(double(5));//輸出:10
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 建筑工程鋼筋承包合同
- 個(gè)人合作協(xié)議合同
- 綠色能源采購供應(yīng)合作協(xié)議
- 物流運(yùn)輸行業(yè)風(fēng)險(xiǎn)免責(zé)協(xié)議
- 合伙人退出協(xié)議6篇
- Module3 Unit2 Point to the window(教學(xué)設(shè)計(jì))-2024-2025學(xué)年外研版(一起)英語一年級上冊
- 小學(xué)信息技術(shù)五年級上冊第4課《 美化圖像我來做》教學(xué)設(shè)計(jì)
- 濟(jì)南非金屬聲屏障施工方案
- 26 我的“長生果”教學(xué)設(shè)計(jì)-2024-2025學(xué)年語文五年級上冊統(tǒng)編版
- 砼滴水坑施工方案
- 《超級操盤手訓(xùn)練營》課件
- IEC 62368-1標(biāo)準(zhǔn)解讀-中文
- 15J403-1-樓梯欄桿欄板(一)
- 新能源汽車驅(qū)動(dòng)電機(jī)及控制系統(tǒng)檢修課件 學(xué)習(xí)情境3:驅(qū)動(dòng)電機(jī)的檢修
- DB43T 744-2012 錳水質(zhì)在線自動(dòng)分析儀
- QC課題提高金剛砂地面施工一次合格率
- 《數(shù)學(xué)課程標(biāo)準(zhǔn)》義務(wù)教育2022年修訂版(原版)
- 研學(xué)旅行基地評估認(rèn)定評分表
- 第5課 用發(fā)展的觀點(diǎn)看問題-【中職專用】2024年中職思想政治《哲學(xué)與人生》金牌課件(高教版2023·基礎(chǔ)模塊)
- DL∕T 5210.4-2018 電力建設(shè)施工質(zhì)量驗(yàn)收規(guī)程 第4部分:熱工儀表及控制裝置
- 承包設(shè)備拆裝合同范本
評論
0/150
提交評論