陣列與物件中的尾隨逗號:標準還是容忍?
數組和物件中尾隨逗號的存在引發了一些關於它們的爭論JavaScript 的標準化。這個問題源自於在不同瀏覽器中觀察到的不一致行為,特別是舊版的 Internet Explorer。
規範狀態
規範狀態ObjectLiteral : { } { PropertyNameAndValueList } { PropertyNameAndValueList , }
根據ECMAScript 5 規範(第11.1.5 節) ),物件字面量中明確允許使用尾隨逗號:
ObjectLiteral : { } { 屬性名稱與值清單 } { PropertyNameAndValueList , }因此,物件字面量中的尾隨逗號是官方 JavaScript 規範的一部分。
ES3 與 ES5有趣的是,尾隨物件字面量中的逗號不是 ECMAScript 3 規範的一部分。然而,它們在 ECMAScript 5 中作為可選功能引入。
陣列與尾隨逗號ObjectLiteral : { } { PropertyNameAndValueList } { PropertyNameAndValueList , }
ECMAScript 5 規範(第 11.1.4 節)也允許在陣列文字:
ArrayLiteral : [ 省略選擇 ] [ 元素列表 ] [ ElementList , Elision_opt ]"Elision" 指的是沒有關聯元素的逗號,這表示陣列可以包含空元素。因此,像 [1,2,,,,] 這樣的陣列是有效的 JavaScript,它會建立一個包含兩個元素但長度為 5 的陣列。
瀏覽器相容性雖然尾隨逗號是 JavaScript 規範的一部分,但瀏覽器支援隨著時間的推移而變化。像 IE8 這樣的舊瀏覽器可能會遇到尾隨逗號的問題,但像 Chrome 和 Firefox 這樣的現代瀏覽器完全支援它們。
總之,陣列和物件中的尾隨逗號是 ECMAScript 規範的一部分,無論是在 ES5 或更高版本中版本。此功能提供了程式碼可讀性和可維護性方面的靈活性,並受到現代瀏覽器的廣泛支援。免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3