JavaScript從入門到精通 純筆記(day04)--函數(shù)1

一、函數(shù)

1、函數(shù)概述

? ? ? ? 實際上就是多行代碼的抽?。ǘ嘈写a會構成特定的功能)

2、、函數(shù)的優(yōu)點

? ? ? ? 減少冗余代碼(重復的代碼放在函數(shù)里來封裝起來)

? ? ? ? 提高了代碼的可維護性以及可閱讀性

3、函數(shù)分類

? ? ? ? 系統(tǒng)函數(shù)? ? window里面的所有函數(shù)都屬于系統(tǒng)函數(shù)(console.log(),alert())

? ? ? ? 內(nèi)置函數(shù)? ? 所有的內(nèi)置對象里面的函數(shù)都叫內(nèi)置函數(shù)(Math.pow()...)

? ? ? ? 自定義函數(shù)? ? 自己定義的函數(shù)

注:內(nèi)置和系統(tǒng)函數(shù)更關注使用,而自定義函數(shù)關注定義以及使用

4、自定義函數(shù)的定義以及調(diào)用

? ? ? ? 1)、使用function關鍵詞定義匿名函數(shù)(沒有名字的函數(shù))

? ? ? ? ? ? 例:

? ? ? ? ? ? ? ? ? ? function(){

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? consolo.log(' ')

????????????????????????}

? ? ? ? 注:匿名函數(shù)直接調(diào)用,讓其他事件去自動調(diào)用,聲明比較少,沒有復用價值

? ? ? ? ? ? ? ? ? ? 自執(zhí)行函數(shù):

? ? ? ? ? ? ? ? ? ? ? ? (function(){

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? console.log(' ')

????????????????????????????}()

? ? ? ? ? ? ? ? 注:自執(zhí)行函數(shù)不能傳參,函數(shù)調(diào)用后面帶(),自執(zhí)行的匿名函數(shù),沒有復用價值,只能用一次

? ? ? ? 2)、使用function關鍵詞定義具名函數(shù)(有名字的函數(shù))

? ? ? ? ? ? ? ? ?第一種:? ?function 函數(shù)名(形參1,形參2....){

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 函數(shù)體(代碼塊)

????????????????????}

? ? ? ? ? ? ? ? ? ? 變種的具名函數(shù):

? ? ? ? ? ? ? ? ? 第二種:? var? ? ?函數(shù)名 = function(){

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 代碼塊

????????????????????}

? ? ? ? ? ? ? ? ? ? 注:對于調(diào)用速度來說,第一種更快,因為function和var在預解析階段就會聲? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????????明,而var關鍵詞修飾的變量在預解析階段是不會賦值的

? ? ? ? 3)、使用new Function聲明(new后面的Function首字母一定要大寫)

? ? ? ? ? ? ? ? var? ? 函數(shù)名? ? =? ? new? ? Function('????形參1,形參2....????'????'????函數(shù)內(nèi)容題????')

? ? ? ? ? ? ? ? 預解析:

? ? ? ? ? ? ? ? ? ? ? ? 預解析會做的事情:1、它會在聲明對應function和var關鍵詞修飾的變量開辟內(nèi)存

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?2、對應的function的內(nèi)存空間開辟以后它會將對應的代碼塊放在里面,等待調(diào)用

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?3、var修飾的關鍵詞,只會開辟一個空間,并不會進行復制(默認undefined)

return關鍵詞

return返回對應的數(shù)據(jù),調(diào)用return后,后面的內(nèi)容將不再執(zhí)行,如果沒有return,默認返回undefined

函數(shù)執(zhí)行過程

1、方法棧:也稱執(zhí)行棧,是吧對應開辟的function內(nèi)存里面的代碼塊丟給他去執(zhí)行

2、執(zhí)行棧會自動去執(zhí)行對應的方法,執(zhí)行完返回對應結果

作用域

當前一個變量的作用范圍,分為局部,全局作用域

1.局部變量:位于某一個代碼里面,稱為局部變量,不能被全局訪問(解決:變量提升為全局變量)

2、作用域鏈:先往同級的地方找,找不到向上面找,一直找到為止

注:如果外面沒有聲明變量,找不到變量就會報錯

3、局部作用域:在一個函數(shù)內(nèi)聲明的或者在一段代碼塊內(nèi)聲明的,作用范圍是當前的代碼塊

4、全局作用域:在對應的全局聲明的,作用范圍是全局

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內(nèi)容