您好,登錄后才能下訂單哦!
這篇“JS函數(shù)實(shí)例分析”文章的知識(shí)點(diǎn)大部分人都不太理解,所以小編給大家總結(jié)了以下內(nèi)容,內(nèi)容詳細(xì),步驟清晰,具有一定的借鑒價(jià)值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來(lái)看看這篇“JS函數(shù)實(shí)例分析”文章吧。
函數(shù)聲明和函數(shù)表達(dá)式有什么區(qū)別
函數(shù)聲明:functionbar(){}
函數(shù)表達(dá)式:varfuc=foo(){}
1.函數(shù)bar將會(huì)在整個(gè)程序執(zhí)行前被hoist(提升),因此它在定bar函數(shù)的整個(gè)scope(作用域)中都是可用的。即使在函數(shù)定義之前調(diào)用它也沒(méi)問(wèn)題。
2.對(duì)于函數(shù)聲明,函數(shù)的名稱是必須的,而對(duì)于函數(shù)表達(dá)式而言則是可選的,因此,就出現(xiàn)了匿名函數(shù)表達(dá)式和命名函數(shù)表達(dá)式。
3在這個(gè)函數(shù)里
varfoo=functionbar(){
bar();//Works};
bar();//ReferenceError命名函數(shù)bar賦值給了變量foo,所以在函數(shù)聲明外是不可見(jiàn)的,但在bar`函數(shù)內(nèi)部仍然可以調(diào)用。這是因?yàn)镴avascript對(duì)命名函數(shù)處理的機(jī)制,函數(shù)的名稱永遠(yuǎn)在函數(shù)內(nèi)部的作用域中有效。
什么是變量的聲明前置?什么是函數(shù)的聲明前置(**)
所謂的變量聲明前置就是在一個(gè)作用域塊中,所有的變量都被放在塊的開(kāi)始出聲明。下面通過(guò)三段代碼舉例:
代碼1:
vara=1;
functionmain(){
console.log(a);//1
}
main();//輸出1`
代碼2:
1vara=1;
2functionmain(){
3console.log(a);
4vara=2;
5}
6main()//輸出undefined
代碼3:為什么代碼2會(huì)輸出undefined
1vara=1;
2functionmain(){
3vara;
4console.log(a);
5a=2;
6}
函數(shù)的聲明前置就是把整個(gè)函數(shù)提升到當(dāng)前作用域的最前面(位于前置的變量聲明后面)。
varnum=1;
console.log(doubleNum(num));//2
functiondoubleNum(num){returnnum2;}
等價(jià)于
//函數(shù)的聲明前置
varnum;
functiondoubleNum(num){returnnum2;}
num=1;
console.log(doubleNum(num));//2
arguments是什么(*)
arguments是一個(gè)類數(shù)組對(duì)象。代表傳給一個(gè)function的參數(shù)列表??梢栽诤瘮?shù)內(nèi)部通過(guò)使用arguments對(duì)象來(lái)獲取函數(shù)的所有參數(shù)。這個(gè)對(duì)象為傳遞給函數(shù)的每個(gè)參數(shù)建立一個(gè)條目,條目的索引號(hào)從0開(kāi)始。
函數(shù)的重載怎樣實(shí)現(xiàn)(**)
可以通過(guò)arguments的length和參數(shù)的類型來(lái)實(shí)現(xiàn)。例:
functionsumOfSquares(a,b,c){
if(arguments.length<3){
c=0;
}
returnaa+bb+c*c
}
sumOfSquares(2,3,4);//29
sumOfSquares(1,3);//10
立即執(zhí)行函數(shù)表達(dá)式是什么?有什么作用(***)
立即執(zhí)行函數(shù)通常有下面兩種寫(xiě)法:
(function(){...})();
(function(){...}());//推薦使用
在Javascript中,一對(duì)圓括號(hào)“()”是一種運(yùn)算符,跟在函數(shù)名之后,表示調(diào)用該函數(shù)。
什么是函數(shù)的作用域鏈
作用域就是變量和函數(shù)的可訪問(wèn)范圍,控制著變量和函數(shù)的可見(jiàn)性與生命周期,在JavaScript中變量的作用域有全局作用域和局部作用域。
作用域鏈?zhǔn)钱?dāng)代碼在一個(gè)環(huán)境中執(zhí)行時(shí),會(huì)創(chuàng)建變量對(duì)象的一個(gè)作用域鏈(scopechain,不簡(jiǎn)稱sc)來(lái)保證對(duì)執(zhí)行環(huán)境有權(quán)訪問(wèn)的變量和函數(shù)的有序訪問(wèn)。作用域第一個(gè)對(duì)象始終是當(dāng)前執(zhí)行代碼所在環(huán)境的變量對(duì)象(VO)
以上就是關(guān)于“JS函數(shù)實(shí)例分析”這篇文章的內(nèi)容,相信大家都有了一定的了解,希望小編分享的內(nèi)容對(duì)大家有幫助,若想了解更多相關(guān)的知識(shí)內(nèi)容,請(qǐng)關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。