事件驅(qū)動(dòng)模型:
事件(操作吭练,動(dòng)作)
事件類型(具體的動(dòng)作類型)
事件源(發(fā)生動(dòng)作的地方)
事件監(jiān)聽器(監(jiān)聽事件發(fā)生的程序)
事件處理程序(事件響應(yīng)程序--函數(shù))
函數(shù):
函數(shù)是由事件驅(qū)動(dòng)的或者當(dāng)它被調(diào)用時(shí)執(zhí)行的可重復(fù)使用的代碼塊。
簡(jiǎn)言之函數(shù)由以下四個(gè)組成
1.代碼塊
2.能夠被重復(fù)使用
3.事件驅(qū)動(dòng)的
4.當(dāng)它被調(diào)用時(shí)執(zhí)行的(主動(dòng)調(diào)用)
定義:
a. 函數(shù)聲明
function 函數(shù)名稱([參數(shù)列表]) {
// 函數(shù)主體:代碼塊
}
b. 函數(shù)表達(dá)式(匿名函數(shù))
var 變量名 = function([參數(shù)列表]) {
// 函數(shù)主體:代碼塊
}
c. (了解)new 構(gòu)造函數(shù)()
var 變量名 = new Function(["參數(shù)列表", ]"函數(shù)主體");
調(diào)用:
a. 直接調(diào)用:函數(shù)名()
b. 事件驅(qū)動(dòng):通過(guò)觸發(fā)函數(shù)實(shí)現(xiàn)調(diào)用
參數(shù):
函數(shù)的輸入條件
形參(形式參數(shù)): 函數(shù)定義時(shí)的參數(shù)
實(shí)參(實(shí)際參數(shù)): 函數(shù)調(diào)用時(shí)的參數(shù)
注意:
形參個(gè)數(shù)可以和實(shí)參個(gè)數(shù)不同猴蹂。
1.實(shí)參個(gè)數(shù)小于形參個(gè)數(shù)時(shí)亥贸,未傳遞的參數(shù)在函數(shù)體中相當(dāng)于是 undefined;
2.實(shí)參個(gè)數(shù)大于形參個(gè)數(shù)時(shí)执解,多余傳遞的參數(shù)在函數(shù)中會(huì)被忽略
arguments
用于函數(shù)體內(nèi)部款青,表示函數(shù)被調(diào)用時(shí)所獲得到的實(shí)參列表
可以使用 arguments.length 獲取實(shí)參個(gè)數(shù)
可以使用 arguments[index] 獲取第 index 個(gè)參數(shù),index表示的是參數(shù)列表中參數(shù)的編號(hào)脚猾,編號(hào)從0開始
返回值:
函數(shù)的輸出
return 表達(dá)式;
返回值返回到函數(shù)調(diào)用處葱峡,函數(shù)通過(guò) return 最多只能返回一個(gè)值。
如果函數(shù)中未顯式 return 返回值婚陪,則相當(dāng)于是 return undefined;
函數(shù)體中 return 執(zhí)行后族沃,還有未執(zhí)行完的函數(shù)體不再執(zhí)行。
跳轉(zhuǎn)語(yǔ)句:
1、break;
switch脆淹、循環(huán)
continue;
循環(huán)
2常空、return 表達(dá)式;
函數(shù)
作用域:
作用范圍
1、全局:
定義在所有函數(shù)之外的變量盖溺,全局作用域的變量能夠在所有的腳本中使用
2漓糙、局部(函數(shù)級(jí)):
使用var定義在函數(shù)體內(nèi)部的變量,只在函數(shù)內(nèi)部有作用烘嘱,超出函數(shù)體的范圍不能進(jìn)行使用
3、塊級(jí):
a. let/const 定義變量(ES6蝇庭,有瀏覽器兼容問(wèn)題)
let 變量名 = 變量值;
const 變量名 = 變量值;
let/const 沒(méi)有聲明提升醉鳖,如果在使用let/const定義變量前使用到變量,則報(bào)錯(cuò)(把定義變量前區(qū)域稱作是“暫存死區(qū)”)
let定義的是變量哮内,即以后還可以修改變量中的值
const定義的是常量盗棵,即一旦變量中的值賦值確定,則以后不能再修改
b. IIFE(立即調(diào)用函數(shù)表達(dá)式北发,自執(zhí)行匿名函數(shù))
(function(){})();
(function(){}());
聲明提升(預(yù)解析):
將所有使用 var 定義的變量聲明部分提升到對(duì)應(yīng)作用域的最頂部纹因,變量賦值位置不變。
函數(shù)也能聲明提升:函數(shù)聲明方式定義的函數(shù)琳拨,將整體都提升到對(duì)應(yīng)作用域的最頂部瞭恰,如果是函數(shù)表達(dá)式的方式定義的函數(shù),則只將變量聲明提升到對(duì)應(yīng)作用域的最頂部狱庇,變量賦值部分位置不動(dòng)惊畏。
遞歸
函數(shù)內(nèi)部實(shí)現(xiàn)對(duì)函數(shù)自身的調(diào)用
遞歸可能會(huì)降低效率