JavaScript函數(shù)
1.什么是函數(shù)巢价?
函數(shù)是完成指定任務(wù)的已命名的代碼塊。函數(shù)的本質(zhì)就是一段代碼固阁。函數(shù)就是一個(gè)功能
2.函數(shù)的作用壤躲?
???(1)提高開發(fā)效率(提高工作效率)
(2)降低軟件的復(fù)雜度(減少代碼量)
(3)降低項(xiàng)目的維護(hù)成本(便于后期維護(hù))
(4)提高代碼重用性(重用性高)
3.函數(shù)的分類?
???系統(tǒng)函數(shù)备燃,系統(tǒng)幫我們定義好的函數(shù)叫做系統(tǒng)函數(shù)碉克,這種函數(shù)不需要自己定義,只需調(diào)用即可
如alert() ???document.write() ??console.log() ??prompt() ?Math.random()
4.如何聲明(定義)一個(gè)函數(shù)
??(1) 使用function關(guān)鍵字聲明
function函數(shù)名(形參可以有0,1或多個(gè)){
函數(shù)要執(zhí)行的代碼體
?????}
(2)匿名函數(shù)并齐,就是沒有名字的函數(shù)漏麦。在調(diào)用的時(shí)候與聲明函數(shù)一樣
var變量名 = function(){
? 函數(shù)要執(zhí)行的代碼體
}
(3)使用構(gòu)造函數(shù)
var變量名 = new Function(參數(shù),參數(shù)况褪,函數(shù)體);
5.函數(shù)的調(diào)用
???因?yàn)楹瘮?shù)聲明后撕贞,并不會(huì)執(zhí)行,要想讓函數(shù)執(zhí)行测垛,必須調(diào)用捏膨。
???(1)調(diào)用的方法
如果采用第一種方式聲明的函數(shù),調(diào)用方式是函數(shù)名();
如果采用第二種方式聲明的函數(shù)赐纱,調(diào)用方式是變量名();
如果采用第三種方式聲明的函數(shù)脊奋,調(diào)用方式是變量名();
(2)調(diào)用的位置
如果采用第一種聲明方式,函數(shù)的調(diào)用位置可以在聲明之前
如果采用第二種聲明方式疙描,函數(shù)的調(diào)用必須放在聲明之后
如果采用第三種聲明方式诚隙,函數(shù)的調(diào)用必須放在聲明之后
?6.函數(shù)的本質(zhì)
???函數(shù)的調(diào)用本質(zhì)上就是執(zhí)行函數(shù)定義中的代碼體,執(zhí)行完后起胰,返回到函數(shù)調(diào)用的位置繼續(xù)執(zhí)行久又。
???
?7.函數(shù)名的命名要求?
命名要求數(shù)字字母下劃線效五,首字母不能為數(shù)字地消,嚴(yán)格區(qū)分大小寫,且不能使用關(guān)鍵字
?8.函數(shù)的特點(diǎn)
???函數(shù)可以重復(fù)調(diào)用
函數(shù)可以在聲明之前調(diào)用
9.函數(shù)的參數(shù)
(1)形參的個(gè)數(shù) == 實(shí)參的個(gè)數(shù)畏妖,參數(shù)依次給形參賦值
(2)形參的個(gè)數(shù) < 實(shí)參的個(gè)數(shù)脉执,實(shí)參依次給形參賦值,多余的實(shí)參不要
(3)形參的個(gè)數(shù) > 實(shí)參的個(gè)數(shù)戒劫,只給有限個(gè)形參賦值半夷,有形參未賦值(這種情況要避免)
10.函數(shù)的返回值
?????函數(shù)還可以分為執(zhí)行函數(shù)和返回值函數(shù)
返回值函執(zhí)行函數(shù):只執(zhí)行功能代碼婆廊,沒有返回值
數(shù):函數(shù)執(zhí)行完后,返回一個(gè)值
函數(shù)的返回值通過return得到巫橄,如果函數(shù)內(nèi)部有return, return什么淘邻, 函數(shù)就返回什么;如果函數(shù)內(nèi)部沒有return,函數(shù)的返回值就是undefined.
return在函數(shù)中有兩個(gè)作用湘换,第一個(gè)是返回函數(shù)的返回值宾舅,第二個(gè)是終止函數(shù)的執(zhí)行
?11.作用域
??作用域就是起作用的范圍,是個(gè)大小范圍的概念彩倚。
???根據(jù)作用域的不同筹我,可以將變量分為兩類:局部變量全局變量
局部變量,就是在函數(shù)內(nèi)部定義的變量署恍,局部變量的作用域是函數(shù)內(nèi)部
全局變量崎溃,在函數(shù)外部定義的變量叫全局變量,全局變量的作用域從定義變量的位置開始到整個(gè)代碼結(jié)束的區(qū)間的函數(shù)的內(nèi)部和外部盯质。
總結(jié)作用域:
1.變量的作用域:
作用域:變量和函數(shù)的可訪問范圍
作用域可分為:
(1)全局作用域:一經(jīng)定義代碼的任何位置都可以訪問
(2)局部作用域:只能在當(dāng)前函數(shù)內(nèi)訪問
??2.函數(shù)作用域的變量
將變量或函數(shù)聲明在某函數(shù)內(nèi)袁串,有效范圍就在該函數(shù)中,出了該函數(shù)呼巷,變量或函數(shù)就失效
3.全局作用域的變量
將變量定義在獨(dú)立于任何function的位置處(中)囱修,在代碼的任何位置都可以訪問到
(1)獨(dú)立于任何 function 聲明變量
(2)函數(shù)中,通過不寫var的方式聲明全局變量
4.注意
(1)全局變量和局部變量沖突時(shí)王悍,優(yōu)先使用的是 局部變量
5.聲明提前:
js程序正式執(zhí)行前破镰,會(huì)把所有var聲明的變量預(yù)讀到所在作用域的頂部。但對(duì)變量的賦值依然保留在原位置
一:運(yùn)算符和表達(dá)式
1.三目運(yùn)算符(三元運(yùn)算符)
表達(dá)式1?:表達(dá)式2:表達(dá)式3压储;
表達(dá)式1的值應(yīng)該為boolean類型的值
如果表達(dá)式1的值為true,那么表達(dá)式2作為整個(gè)表達(dá)式的結(jié)果
如果表達(dá)式1的值為false,那么表達(dá)式3做為整個(gè)表達(dá)式的結(jié)果
+= -+ *= /= ?%=
var a=3;
a+=5;
console.log(a);