1举反、 函數(shù)聲明和函數(shù)表達(dá)式有什么區(qū)別
函數(shù)聲明: function functionName( ){ }
函數(shù)表達(dá)式: var fn = function( ){ }
函數(shù)聲明會(huì)提前,函數(shù)表達(dá)式可以省略標(biāo)識(shí)符(函數(shù)名)蚤认。
2凹蜈、 什么是變量的聲明前置限寞?什么是函數(shù)的聲明前置
所謂的變量聲明前置就是在一個(gè)作用域塊中,所有的變量都放在塊的開(kāi)始處聲明仰坦。和變量聲明前置一樣履植,執(zhí)行代碼之前會(huì)先讀取函數(shù)聲明,只要函數(shù)在代碼中進(jìn)行了聲明悄晃,無(wú)論它在哪個(gè)位置上進(jìn)行聲明玫霎,js引擎都會(huì)將它的聲明放在范圍作用域的頂部。
3妈橄、 arguments是什么
arguments是一個(gè)類(lèi)數(shù)組對(duì)象庶近,代表傳給一個(gè)function的參數(shù)列表。
arguments對(duì)象是函數(shù)內(nèi)部的本地變量眷蚓;arguments已經(jīng)不再是函數(shù)的屬性了鼻种。可以在函數(shù)內(nèi)部通過(guò)使用arguments對(duì)象獲取函數(shù)的所有參數(shù)沙热。這個(gè)對(duì)象為傳遞給函數(shù)的每個(gè)參數(shù)建立一個(gè)條目普舆,條目的索引號(hào)從0開(kāi)始恬口。它包括了函數(shù)說(shuō)要調(diào)用的參數(shù)。object對(duì)象沼侣、類(lèi)數(shù)組祖能。
4、 函數(shù)的“重載”怎樣實(shí)現(xiàn)
在JS中蛾洛,沒(méi)有重載养铸,同名函數(shù)會(huì)覆蓋,但可以在函數(shù)體針對(duì)不同的參數(shù)調(diào)用執(zhí)行相應(yīng)的邏輯轧膘。
5钞螟、 立即執(zhí)行函數(shù)表達(dá)式是什么?有什么作用谎碍?
作用:隔離作用域鳞滨。
因?yàn)镴avaSript有很多致命缺陷,以至于各類(lèi)人才開(kāi)發(fā)出各種技巧來(lái)彌補(bǔ)JavaScript設(shè)計(jì)和歷史遺留問(wèn)題蟆淀。
比如JavaScript中沒(méi)有命名空間拯啦,而且只有function代碼塊內(nèi)部可以隔離變量作用域,自調(diào)匿名函數(shù)就用來(lái)防止變量彌散到全局熔任,以免各種js庫(kù)沖突褒链。