JavaScript基礎(chǔ)概念
JavaScript中的全局對象:瀏覽器暴露給JS引擎的主要全局對象是window對象虎谢,它代表了包含著一個頁面的窗口跛蛋。window對象是獲取所有其他全局對象看幼,全局變量和瀏覽器API的訪問途徑劈榨。全局對象window最重要的屬性是document浙炼,它代表了當(dāng)前頁面的DOM,通過使用這個對象土童,JS代碼就能在任何程度上改變DOM诗茎,包括修改和移除現(xiàn)存的節(jié)點(diǎn),以及創(chuàng)建和插入新的節(jié)點(diǎn)娜扇。
-
JavaScript代碼的不同類型:
- 函數(shù)代碼指的是包含在函數(shù)中的代碼错沃。
- 全局代碼指的是位于函數(shù)之外的代碼栅组。
函數(shù)
在JS中雀瓢,對象能做的任何一件事,函數(shù)也能做玉掸。函數(shù)也是對象刃麸,唯一的特殊之處在于它是可調(diào)用的,即函數(shù)會被調(diào)用以便執(zhí)行某項動作司浪。
第一類對象的特點(diǎn)之一是泊业,它能夠作為參數(shù)傳入函數(shù),對于函數(shù)而言啊易,這項特性也表明:如果我們將某個函數(shù)作為參數(shù)傳入另一個函數(shù)吁伺,傳入函數(shù)會在應(yīng)用程序執(zhí)行的未來某個時間點(diǎn)才執(zhí)行,其概念則是回調(diào)函數(shù)租谈。
回調(diào)函數(shù):即在執(zhí)行過程中篮奄,我們建立的函數(shù)會被其他函數(shù)在稍后的某個合適時間點(diǎn)再回來調(diào)用捆愁。
-
函數(shù)定義:
- 函數(shù)定義和函數(shù)表達(dá)式 function myFun(){..}
- 箭頭函數(shù) myArg =>myArg * 2
- 函數(shù)構(gòu)造函數(shù) new Function('a','b','return a+b')
- 生成器函數(shù) function * myFun(){..}
立即函數(shù):在創(chuàng)建函數(shù)的同時,立即調(diào)用這個新創(chuàng)建的函數(shù)窟却。作用是創(chuàng)建一個獨(dú)立的作用域昼丑,這個作用于里面的變量,外面訪問不到夸赫,避免[變量污染]菩帝。
參數(shù)
形參是我們定義函數(shù)時所列舉的變量。
實(shí)參是我們調(diào)用函數(shù)時所傳遞給函數(shù)的值茬腿。
當(dāng)實(shí)參大于形參個數(shù)時不會報錯呼奢,當(dāng)實(shí)參小于形參個數(shù)時,會將undefined賦值上去切平。
(ES6)默認(rèn)參數(shù):為函數(shù)的形參賦值控妻,如果指定了實(shí)參的值,參數(shù)則會被覆蓋揭绑。
arguments參數(shù):是傳遞給函數(shù)的所有參數(shù)集合弓候,無論是否有明確對應(yīng)的形參,通過它我們都可以訪問到函數(shù)的所有參數(shù)他匪。
arguments對象有一個名為length的屬性菇存,表示實(shí)參的確切個數(shù),通過數(shù)組索引的方式可以獲取單個參數(shù)的值邦蜜。
-
函數(shù)調(diào)用的4種方式:
- 作為一個函數(shù)(function)——skulk(),直接被調(diào)用依鸥。
- 作為一個方法(method)——ninja.skulk(),關(guān)聯(lián)在一個對象上悼沈,實(shí)現(xiàn)面向?qū)ο缶幊獭?/li>
- 作為一個構(gòu)造函數(shù)(constructor)——new Ninja()贱迟,實(shí)例化一個新的對象。
- 通過函數(shù)的apply或者call方法——skulk.apply(ninja)或者skulk(ninja)絮供。