3 回答
已采納

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

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