JavaScript Function 函數(shù)深入總結(jié)

JavaScript Function 函數(shù)深入總結(jié)

ID:42562963

大?。?34.81 KB

頁數(shù):43頁

時間:2019-09-17

JavaScript Function 函數(shù)深入總結(jié)_第1頁
JavaScript Function 函數(shù)深入總結(jié)_第2頁
JavaScript Function 函數(shù)深入總結(jié)_第3頁
JavaScript Function 函數(shù)深入總結(jié)_第4頁
JavaScript Function 函數(shù)深入總結(jié)_第5頁
資源描述:

《JavaScript Function 函數(shù)深入總結(jié)》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫

1、整理了JavaScript中函數(shù)Function的各種,感覺函數(shù)就是一大對象啊,各種知識點都能牽扯進來,不單單是?Function?這個本身原生的引用類型的各種用法,還包含執(zhí)行環(huán)境,作用域,閉包,上下文,私有變量等知識點的深入理解。函數(shù)中的return1.?return?語句可以不帶有任何返回值,在這種情況下(?return;?或函數(shù)中不含?return?語句時),函數(shù)在停止執(zhí)行后將返回?undefiend?值。這種用法一般在需要提前停止函數(shù)執(zhí)行而又不需要返回值的情況下。2.?return?false?可

2、以阻止元素的默認事件。3.?return?返回的是其所在函數(shù)的返回值4.functionn(){5.(function(){6.return5;7.})();8.}9.n();//undefined10.//立即執(zhí)行匿名函數(shù)中的return語句其實是返回給它所在的匿名函數(shù)的。11.12.functionn(){13.varnum=(function(){14.return5;15.})();16.console.log(num);}Function類型函數(shù)實際上是對象,每個函數(shù)實際上都是?Function

3、?類型的實例。而且與其他引用類型一樣具有屬性和方法。函數(shù)名實際上是一個指向內(nèi)存堆中某個函數(shù)對象的指針。定義函數(shù)的方式1.函數(shù)聲明2.functionsum(num1,num2){3.returnnum1+num2;}4.函數(shù)表達式5.varsum=function(num1,num2){6.returnnum1+num2;};定義了一個變量?sum?并將其初始化為一個函數(shù),注意到?function?關(guān)鍵字后面并沒有函數(shù)名,這是因為在使用函數(shù)表達式定義函數(shù),沒必要使用函數(shù)名,通過變量?sum?即可引用函數(shù)。

4、還要注意函數(shù)末尾有個分號,就像聲明其他變量一樣。7.?new?構(gòu)造函數(shù),雖然這種用法也是函數(shù)表達式,但該用法不推薦。因為這種語法會導(dǎo)致解析兩次代碼(第一次是解析常規(guī)的ECMAScript代碼,第二次是解析傳入構(gòu)造函數(shù)中的字符串),影響性能。使用?Function?構(gòu)造函數(shù),構(gòu)造函數(shù)可以接受任意數(shù)量的參數(shù),但最后一個參數(shù)始終都被看成是函數(shù)體,前面的參數(shù)則枚舉出了新函數(shù)的參數(shù)。1.varsum=newFunction('num1','num2','returnnum1+num2;');2.sum;//3.fu

5、nctionanonymous(num1,num24./**/){5.returnnum1+num2;}當(dāng)使用不帶圓括號的函數(shù)名是訪問函數(shù)指針,而非調(diào)用函數(shù)。理解參數(shù)ECMAScript中所有參數(shù)傳遞的都是值(即使是引用也是傳遞的地址值,不是引用傳遞參數(shù)(可參考JavaScript傳遞參數(shù)是按值傳遞還是按引用傳遞))。ECMAScript函數(shù)不介意傳遞進來多少個參數(shù),也不在乎傳進來的參數(shù)是什么數(shù)據(jù)類型。之所以這樣,是因為ECMAScript中的參數(shù)在內(nèi)部是用一個數(shù)組表示的。函數(shù)接收到的始終都是這個數(shù)組,而

6、不關(guān)心數(shù)組中包含哪些參數(shù)。在函數(shù)體內(nèi),可以通過?arguments?對象來訪問這個數(shù)組。從而獲取傳遞給函數(shù)的每個參數(shù)。functionfunc(){console.log(Object.prototype.toString.call(arguments));}func();//[objectArguments]1.關(guān)于?arguments?的行為,它的值永遠與對應(yīng)命名參數(shù)的值保持同步。因為?arguments?對象中的值會自動反映到對應(yīng)的命名參數(shù)。所以修改?arguments[1]?,也就修改了?num2

7、?。不過這并不是說讀取這兩個值會訪問相同的內(nèi)存空間,它們的內(nèi)存空間是獨立的,但他們值會同步(WHY??),要是JavaScript能直接訪問內(nèi)存就好了驗證一下。2.但如果只傳入了一個參數(shù),那么?arguments[1]?設(shè)置的值不會反映到命名參數(shù)中,這是因為?arguments?對象的長度是由傳入?yún)?shù)個數(shù)決定的,不是由定義函數(shù)時的命名參數(shù)個數(shù)決定的,沒有傳遞值的命名參數(shù)將自動被賦予?undefiend?值,這就跟定義了變量但沒初始化一樣。3.functiondoAdd(num1,num2){4.conso

8、le.log(arguments.length);5.console.log(num2)6.arguments[1]=10;7.console.log(num2);8.}9.doAdd(5,0);//201010.doAdd(5);//1undefiendundefined沒有重載ECMAScript函數(shù)不能像傳統(tǒng)意義上那樣實現(xiàn)重載,而在其他語言中(Java),可以為一個函數(shù)編寫兩個定義,只要這兩個定義的簽名(接收參數(shù)的類型和

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動畫的文件,查看預(yù)覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負責(zé)整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細閱讀文檔內(nèi)容,確認文檔內(nèi)容符合您的需求后進行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。