3 回答

TA貢獻(xiàn)1877條經(jīng)驗(yàn) 獲得超1個(gè)贊
分號(hào)后函數(shù)的聲明是沒(méi)有必要的。
a的語(yǔ)法FunctionDeclaration
在規(guī)范中描述為:
function Identifier ( FormalParameterListopt ) { FunctionBody }
語(yǔ)法上沒(méi)有分號(hào),但可能想知道為什么?
分號(hào)用于將語(yǔ)句彼此分開(kāi),而a FunctionDeclaration
不是聲明。
FunctionDeclarations
在代碼進(jìn)入執(zhí)行之前進(jìn)行評(píng)估,提升是用于解釋此行為的常用詞。
術(shù)語(yǔ)“函數(shù)聲明”和“函數(shù)聲明”經(jīng)常被錯(cuò)誤地互換使用,因?yàn)镋CMAScript規(guī)范中沒(méi)有描述函數(shù)聲明,但是有些實(shí)現(xiàn)在語(yǔ)法中包含一個(gè)函數(shù)聲明,特別是Mozilla-但是這個(gè)是非標(biāo)準(zhǔn)的。
但是,在您使用的地方始終建議使用分號(hào)FunctionExpressions
,例如:
var myFn = function () { //...};(function () { //...})();
如果在上例中的第一個(gè)函數(shù)之后省略分號(hào),則會(huì)得到完全不希望的結(jié)果:
var myFn = function () { alert("Surprise!");} // <-- No semicolon!(function () { //...})();
第一個(gè)函數(shù)將立即執(zhí)行,因?yàn)閲@第二個(gè)函數(shù)的括號(hào)將被解釋為Arguments
函數(shù)調(diào)用。
推薦講座:
命名的函數(shù)表達(dá)式揭秘(偉大的文章)

TA貢獻(xiàn)1841條經(jīng)驗(yàn) 獲得超3個(gè)贊
我在函數(shù)變量聲明之后使用它們:
var f = function() { ... };
但不是經(jīng)典風(fēng)格的定義:
function f() { ...}
添加回答
舉報(bào)