這里面涉及兩個問題:一是JavaScript數(shù)組中trailingcomma的處理,二是JavaScript中數(shù)組的類型轉(zhuǎn)換。關(guān)于trailingcomma:ES5忽略trailingcomma,認(rèn)為[1,]與[1]一樣,都表示一個有單一元素的數(shù)組(但只實(shí)現(xiàn)了ES3的JS引擎可能不這么認(rèn)為)。//現(xiàn)代瀏覽器或Node.js環(huán)境[1,].length//=>1[1].length//=>1ES5Spec:11.1.4:Edition5clarifiesthefactthatatrailingcommaattheendofanArrayInitialiserdoesnotaddtothelengthofthearray.ThisisnotasemanticchangefromEdition3butsomeimplementationsmayhavepreviouslymisinterpretedthis.所以,在實(shí)現(xiàn)了ES5的JS引擎里,[1,]實(shí)際上就是[1]。關(guān)于數(shù)組的類型轉(zhuǎn)換:基本步驟:調(diào)用內(nèi)部toPrimitive方法---->調(diào)用[[DefaultValue]]方法(以Number作為hint)---->調(diào)用數(shù)組的valueOf()方法,然而并未得到原始值---->調(diào)用數(shù)組的toString()方法,得到String類型值---->用一元取反運(yùn)算符(-)或運(yùn)算符(+)處理,得到Number類型值。-[1]的處理過程:-[1]------>-'1'--------->-1-[1,2]的處理過程:-[1,2]------>-'1,2'--------->-NaN-[]的處理過程:-[]-------->-''--------->-0這是一個看標(biāo)準(zhǔn)就能解決的問題,不過在生產(chǎn)環(huán)境中,不要在數(shù)組中使用trailingcomma。