As vírgulas finais são padrão no JavaScript ou a maioria dos navegadores como o Chrome e o Firefox os toleram?
Eu pensei que eles eram padrão, mas o IE8 vomitou depois de encontrar um - é claro que o IE não suporta algo dificilmente significa que não é padrão.
Aqui está um exemplo do que quero dizer (após o último elemento da matriz de livros):
var viewModel = {
books: ko.observableArray([
{ title: "..", display: function() { return ".."; } },
{ title: "..", display: function() { return ".."; } },
{ title: "..", display: function() { return ".."; } }, // <--right there
]),
currentTemplate: ko.observable("bookTemplate1"),
displayTemplate: function() { return viewModel.currentTemplate(); }
};
javascript
Adam Rackis
fonte
fonte
Respostas:
Especificações: ECMAScript 5 e ECMAScript 3
Seção 11.1.5 na especificação ECMAScript 5:
Então, sim, isso faz parte da especificação.
Atualização: Aparentemente, isso é novo no ES5. No ES3 (página 41), a definição era apenas:
Para literais de matrizes ( Seção 11.1.4 ), é ainda mais interessante ( atualização: isso já existia no ES3):
(onde
Elision_opt
está Elision opt , o que significa que o Elision é opcional)Elision
é definido comoEntão, uma matriz literal como
é perfeitamente legal. Isso cria uma matriz com dois elementos, mas define o comprimento da matriz como
2 + 3 = 5
.Não espere muito do IE (antes do IE9) ...
fonte
Apenas um lembrete / aviso rápido de que essa é uma das áreas em que o padrão JavaScript / ECMAScript e JSON diferem; vírgulas finais são válidas em JS, mas não são válidas em JSON.
fonte
O que é ainda mais engraçado, o IE7 dá
enquanto Firefox e Chrome
fonte
[1,,].length
dá2
. Sentido : os navegadores não fazem nada.Você pode encontrar a especificação para javascript (também conhecido como ECMA Script) aqui . Você pode encontrar a definição relevante para matrizes na página 63 e, como Felix observou, a definição do objeto algumas páginas mais tarde na página 65.
Embora essa especificação diga que é bom ter um rastro
,
, não sei se isso seria verdade olhando para trás algumas versões. Como você notou, o IE8- se estraga se você deixar uma vírgula à direita, mas o Chrome e o FF lidam bem com isso.fonte
Vamos quebrar isso.
Sim. A partir da especificação do ECMAScript 5 (também parte do guia de estilo do Google e Airbnb)
Esta é uma pergunta de suporte do ECMAScript 5.
Transpilers como Babel removerão a vírgula à direita adicional no código transpilado, o que significa que você não precisa se preocupar com o problema da vírgula à direita nos navegadores herdados.
Então, isso significa:
Então, é provável que, se você estiver usando qualquer coisa do ES5 ou superior, não precise se preocupar com isso.
Novamente, essa é uma pergunta de suporte do ECMAScript 5. O IE8 não suporta ECMAScript 5 (apenas IE9 e superior)
Eu recomendo dar uma olhada na Documentação descontinuada ES5 do Airbnb https://github.com/airbnb/javascript/blob/es5-deprecated/es5/README.md#commas
Eu também recomendaria o Docs do Mozilla:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Trailing_commas
fonte
No Chrome 52:
Só não gosto de vírgulas. As pessoas costumam usá-los em projetos de código aberto para evitar apagar a linha escrita por outro commiter. Veja a mesma pergunta em Python: https://stackoverflow.com/a/11597911/968988
fonte
[1,]
: há claramente algo antes da vírgula. Mas[,]
há tanto antes e depois da vírgula. Então, porque eu não entendo[,]
sozinho, não acho que usar[1,]
é uma boa ideia.