任務(wù)17 問答

1.函數(shù)聲明和函數(shù)表達(dá)式有什么區(qū)別 ?

函數(shù)聲明 function Name(){函數(shù)體}
函數(shù)表達(dá)式 var 變量=function (){};
Javascript 中函數(shù)聲明和函數(shù)表達(dá)式是存在區(qū)別的,函數(shù)聲明在JS解析時進(jìn)行函數(shù)提升,因此在同一個作用域內(nèi),不管函數(shù)聲明在哪里定義,該函數(shù)都可以進(jìn)行調(diào)用。而函數(shù)表達(dá)式的值是在JS運行時確定,并且在表達(dá)式賦值完成后,該函數(shù)才能調(diào)用。

2.什么是變量的聲明前置?什么是函數(shù)的聲明前置?

  • 所謂的變量聲明前置就是在一個作用域塊中,所有的變量都被放在塊的開始出聲明
  • 而函數(shù)的聲明前置因為JS引擎 將函數(shù)名視同變量名,所以采用function命令聲明函數(shù)時,整個函數(shù)被提升到代碼頭部。采用賦值語句聲明函數(shù)時,函數(shù)在原位置被聲明。

3.argument是什么?

argument是一個類數(shù)組的對象??梢詫?shù)傳入argument對象中,并且能調(diào)出數(shù)組的長度,以及當(dāng)前函數(shù)的參數(shù)。

4.函數(shù)的重載怎樣實現(xiàn)?

允許在同一范圍中聲明幾個功能類似的同名函數(shù),但是這些同名函數(shù)的形式參數(shù)必須不同。但在js中沒有函數(shù)重載的概念,因為即使函數(shù)名相同,參數(shù)不同,也被認(rèn)為是相同的函數(shù)。(例子1)

5.立即執(zhí)行函數(shù)表達(dá)式是什么?有什么作用

語法
(function sum(i){ })( );
(function sum(i){ }( ));
var a= function sum(i){ }( );
不必為函數(shù)命名,避免污染全局變量
函數(shù)內(nèi)部形成了一個單獨的作用域,可以封裝一些外部無法讀取的私有變量。通常只對匿名函數(shù)使用。

6.什么是函數(shù)的作用域鏈

當(dāng)一個函數(shù)被調(diào)用時,他先訪問自身的變量,不存在時就回去訪問父級函數(shù)的變量,知道訪問全局變量為止。這種鏈?zhǔn)降倪^程稱為作用于鏈。只能從內(nèi)到外,不能從外到內(nèi)。

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

相關(guān)閱讀更多精彩內(nèi)容

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