溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

JS函數(shù)實(shí)例分析

發(fā)布時(shí)間:2022-03-15 10:36:32 來(lái)源:億速云 閱讀:177 作者:iii 欄目:web開(kāi)發(fā)

這篇“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è)資訊頻道。

向AI問(wèn)一下細(xì)節(jié)

免責(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)容。

js
AI