3 回答

TA貢獻3條經(jīng)驗 獲得超2個贊
var?a?=?function?()?{}?//?函數(shù)表達式 function?a?()?{}?//?函數(shù)聲明
一般定義函數(shù)就是上面那種方式了,你寫的
a:?function?()?{}
應該是方法名值對。
我講一下函數(shù)表達式和函數(shù)聲明的主要區(qū)別吧。
函數(shù)表達式?jīng)]有函數(shù)提升,因為它是匿名函數(shù)。
a(); var?a?=?function?()?{}
上面這段代碼實際執(zhí)行順序為
var?a;?//?undefined a(); a?=?function?()?{}
上面代碼只會執(zhí)行變量提升,所以會報錯,因為執(zhí)行a()時,a還不包含對函數(shù)的引用。
a(); function?a?()?{}
上面這段代碼實際執(zhí)行順序為
function?a?()?{} a();
上面這個叫做函數(shù)提升。所以不會報錯,會正常執(zhí)行。
你的那個a: function () {}他應該是屬于一個對象,a只是變量的一個屬性(方法)而已,直接通過 ? 變量名.方法 ? 調用就行。它是絕對不存在提升的。調用之前需要先定義好。
如果感覺還可以,請采納一下答案

TA貢獻3條經(jīng)驗 獲得超0個贊
簡單的解釋為上面的是函數(shù)表達式,在作用域里要調用該函數(shù)必須得在該函數(shù)表達式之后
下面的是聲明式,作用域里無論哪里都可以調用

TA貢獻452條經(jīng)驗 獲得超796個贊
第一種用法是匿名函數(shù)的形式,第二種的形式是聲明式函數(shù)。 ? ?
a :function(){};相當于 var a = function(){};這種調用的時候直接用就行了
function? ?a() {} ,function定義的是一個函數(shù),a是函數(shù)名,{}里面屬構造的方法。這種正常使用
添加回答
舉報