3 回答

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

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

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