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