javascript
JS-几类函数
JS-幾類函數(shù)
命名函數(shù)、匿名函數(shù)、自調(diào)用函數(shù)、回調(diào)函數(shù);函數(shù)聲明、函數(shù)表達式
函數(shù)聲明
function foo() {}//函數(shù)聲明:function functionName (){ } 對于函數(shù)聲明,函數(shù)的名稱是必須的解析器在向執(zhí)行環(huán)境中加載數(shù)據(jù)時,解析器會率先讀取函數(shù)聲明,并使其在執(zhí)行任何代碼之前可用(可以訪問)。
alert(sum(1,1)); function sum (a,b){return a + b; }以上代碼可以正常執(zhí)行。因為在代碼執(zhí)行之前,解析器就已經(jīng)通過一個名為函數(shù)聲明提升的過程,讀取并將函數(shù)聲明添加到執(zhí)行環(huán)境中 。在對代 碼求值時,Javascript引擎在第一遍會聲明函數(shù)并將它們放到源代碼樹的頂部。所以,即使聲明函數(shù)的代碼放到了調(diào)用它的代碼的后面,Javascript 引擎也能把函數(shù)聲明提升到頂部。
函數(shù)表達式
var fuc = foo(){}//函數(shù)表達式:function functionName[可選](){ }對于函數(shù)表達式,函數(shù)的名稱是是可選的解析器在向執(zhí)行環(huán)境中加載數(shù)據(jù)時,必須要等到解析器執(zhí)行到它所在的代碼行,才會真正被解釋執(zhí)行。
如果像下面例子所示,把上面的函數(shù)聲明改為函數(shù)表達式,就會在執(zhí)行期間導(dǎo)致錯誤。
注意:如果沒有函數(shù)名的話,一定就是函數(shù)表達式 !!!
命名函數(shù)
函數(shù)如果有名字,就是命名函數(shù)
function f1(){console.log("這個函數(shù)就是命名函數(shù)"); }匿名函數(shù)
函數(shù)如果沒有名字,就是匿名函數(shù)
function (){console.log("這個函數(shù)就是匿名函數(shù)"); }注意:匿名函數(shù)不能直接調(diào)用
自調(diào)用函數(shù)
自己調(diào)用自己
注意:這樣函數(shù)不會沖突
回調(diào)函數(shù)
函數(shù)作為參數(shù)調(diào)用
//函數(shù)聲明,fn是變量,fn是參數(shù) function f1(fn){fn();//函數(shù)調(diào)用----說明fn這個變量中存儲的是一個函數(shù) } function f2(){console.log("函數(shù)可以作為參數(shù)使用"); } f1(f2);//調(diào)用f1,將f2作為參數(shù)傳進去 //結(jié)果:函數(shù)可以作為參數(shù)使用幾個需要注意的問題:
★.函數(shù)名里面存儲的就是函數(shù)代碼
function f1(){console.log("這是一個函數(shù)"); } console.log(f1);//打印出來的結(jié)果就是上面的函數(shù)代碼 f1();//這是函數(shù)的調(diào)用★.函數(shù)表達式:把匿名函數(shù)賦給一個變量
var f2 = function(){console.log("把匿名函數(shù)賦給一個變量"); }; f2();//f2中存儲的就是函數(shù)代碼,用變量名加()就是函數(shù)調(diào)用 注意:函數(shù)表達式后面賦值結(jié)束后要加分號★.函數(shù)的覆蓋問題:如果函數(shù)名重復(fù),下面的函數(shù)會自動覆蓋上面的函數(shù)代碼
function f1(){console.log("這是函數(shù)一"); } function f1(){console.log("這是函數(shù)二"); } f1();//此時打印的結(jié)果是:這是函數(shù)二 注意: var f1 = function(){console.log("這是函數(shù)表達式1"); }; f1();//結(jié)果是:這是函數(shù)表達式1f1 = function(){console.log("這是函數(shù)表達式2"); }; f1();//結(jié)果是:這是函數(shù)表達式2 f1();//結(jié)果是:這是函數(shù)表達式2解釋:因為這是函數(shù)表達式,所以第一次調(diào)用的時候是f1調(diào)用上面的代碼,接下來又給變量f1重新賦值后,f1里面存儲的就是后面的賦值結(jié)構(gòu)果了★.函數(shù)可以作為返回值
function f1(){return function(){console.log("這是被返回的函數(shù)");}; } var f = f1();//f1函數(shù)的調(diào)用,此時f就是函數(shù)l f();//調(diào)用函數(shù),結(jié)果為:這是被返回的函數(shù)參考網(wǎng)址:
Javascript學(xué)習(xí)筆記之 函數(shù)篇(一) : 函數(shù)聲明和函數(shù)表達式
JS中的命名函數(shù),匿名函數(shù),自調(diào)用函數(shù)和回調(diào)函數(shù)
轉(zhuǎn)載于:https://www.cnblogs.com/Shinea_SYR/p/9336133.html
總結(jié)
- 上一篇: idea部署iBase4J
- 下一篇: Qt源码在VC环境下编译(以VC14下Q