Em JavaScript, é possível declarar várias variáveis como esta:
var variable1 = "Hello World!";
var variable2 = "Testing...";
var variable3 = 42;
...ou assim:
var variable1 = "Hello World!",
variable2 = "Testing...",
variable3 = 42;
Um método é melhor / mais rápido que o outro?
javascript
variables
coding-style
performance
declaration
Steve Harrison
fonte
fonte
Respostas:
A primeira maneira é mais fácil de manter. Cada declaração é uma única declaração em uma única linha, para que você possa adicionar, remover e reordenar facilmente as declarações.
Com a segunda maneira, é irritante remover a primeira ou a última declaração porque elas contêm a
var
palavra - chave e o ponto-e-vírgula. E toda vez que você adiciona uma nova declaração, é necessário alterar o ponto e vírgula na linha antiga para uma vírgula.fonte
Além da capacidade de manutenção, a primeira maneira elimina a possibilidade de criação de variáveis globais de acidentes:
Enquanto a segunda maneira é menos tolerante:
fonte
var variable1 = "Hello World!", variable2 = "Testing...", variable3 = 42;
. A falta,
irá falhar, mas concordo que é arriscadoPossible Fatal Error
se eu perder um coma, viva para mim!É comum usar uma
var
declaração por escopo para organização. A maneira como todos os "escopos" seguem um padrão semelhante, tornando o código mais legível. Além disso, o mecanismo "eleva" todos eles ao topo de qualquer maneira. Portanto, manter suas declarações juntas imita o que realmente acontecerá mais de perto.fonte
var
declaração. O oposto é verdadeiro. consulte a documentação e este exemploÉ muito mais legível ao fazê-lo desta maneira:
Mas ocupa menos espaço e linhas de código desta maneira:
Pode ser ideal para economizar espaço, mas permita que os compressores JavaScript cuidem disso para você.
fonte
Talvez assim
Exceto ao alterar a primeira ou a última variável, é fácil manter e ler.
fonte
É apenas uma questão de preferência pessoal. Não há diferença entre essas duas maneiras, exceto alguns bytes salvos com o segundo formulário, se você remover o espaço em branco.
fonte
O ECMAScript6 introduziu uma atribuição de desestruturação que funciona muito bem:
[a, b] = [1, 2]
a
será igual1
eb
será igual2
.fonte
let [aVar, bVar, cVar, xVar, yVar, zVar] = [10, 20, 30, 40, 50];
Então, pessoalmente, eu não recomendo.é mais legível que:
Mas eles fazem a mesma coisa.
fonte
var<space>
, em vez disso ,<space><space><space><space>
var<space>
ouvar<tab>
vs<tab>
. Ainda em grande parte discutível.Usar a atribuição de reestruturação do ES6 : descompactará valores de matrizes ou propriedades de objetos em variáveis distintas.
fonte
Meu único e essencial uso de vírgula é um loop for:
Eu fui aqui para verificar se isso está OK em JavaScript.
Mesmo vendo funcionar, permaneceu uma questão de saber se n é local para a função.
Isso verifica, n é local:
Por um momento não tive certeza, alternando entre idiomas.
fonte
Embora ambos sejam válidos, o uso do segundo desencoraja desenvolvedores inexperientes de colocar instruções var em todo o lugar e causar problemas de içamento. Se houver apenas um var por função, na parte superior da função, será mais fácil depurar o código como um todo. Isso pode significar que as linhas em que as variáveis são declaradas não são tão explícitas quanto algumas podem desejar.
Eu sinto que a troca vale a pena, se isso significa afastar um desenvolvedor de deixar 'var' em qualquer lugar que eles desejarem.
As pessoas podem reclamar do JSLint, também, mas muito disso é voltado não para corrigir problemas com a linguagem, mas para corrigir os maus hábitos dos codificadores e, portanto, evitar problemas no código que eles escrevem. Portanto:
"Em idiomas com escopo de bloco, geralmente é recomendável que variáveis sejam declaradas no site de primeiro uso. Mas, como o JavaScript não possui escopo de bloco, é mais prudente declarar todas as variáveis de uma função na parte superior da função. recomendado que uma única instrução var seja usada por função ". - http://www.jslint.com/lint.html#scope
fonte
Eu acho que é uma questão de preferência pessoal. Eu prefiro fazê-lo da seguinte maneira:
fonte
Outro motivo para evitar a versão de instrução única ( var única ) é a depuração. Se uma exceção for lançada em qualquer uma das linhas de atribuição, o rastreamento de pilha mostrará apenas uma linha.
Se você tivesse 10 variáveis definidas com a sintaxe da vírgula, não terá como saber diretamente qual foi o culpado.
A versão da declaração individual não sofre com essa ambiguidade.
fonte
O conceito de "Coesão sobre acoplamento" pode ser aplicado de maneira mais geral do que apenas objetos / módulos / funções. Também pode servir nesta situação:
O segundo exemplo sugerido pelo OP acoplou todas as variáveis na mesma instrução, o que torna impossível pegar uma das linhas e movê-la para outro lugar sem interromper o material (acoplamento alto). O primeiro exemplo que ele deu torna as atribuições variáveis independentes uma da outra (baixo acoplamento).
"O baixo acoplamento costuma ser um sinal de um sistema de computador bem estruturado e de um bom design, e quando combinado com alta coesão, suporta os objetivos gerais de alta legibilidade e manutenção".
http://en.wikipedia.org/wiki/Coupling_(computer_programming)
Então escolha o primeiro.
fonte
Um post antigo, eu sei, mas para adicionar um pequeno detalhe de perspectiva aos colegas Googlers:
O problema de manutenção pode ser facilmente superado com um pouco de formatação, como tal.
Eu uso essa formatação estritamente como uma questão de preferência pessoal. Eu pulo esse formato para declarações únicas, é claro, ou onde ele simplesmente anima as obras.
fonte
Acredito que antes de começarmos a usar o ES6, a abordagem com uma única declaração var não era boa nem ruim (no caso de você ter linters e
'use strict'
. Foi realmente uma preferência de gosto. Mas agora as coisas mudaram para mim. Existem meus pensamentos a favor da declaração multilinha :Agora, temos dois novos tipos de variáveis e nos
var
tornamos obsoletos. É uma boa prática usar emconst
qualquer lugar até que você realmente preciselet
. Frequentemente, seu código conterá declarações de variáveis com atribuição no meio do código e, devido ao escopo do bloco, você frequentemente moverá variáveis entre os blocos em caso de pequenas alterações. Eu acho que é mais conveniente fazer isso com declarações multilinhas.A sintaxe do ES6 tornou-se mais diversificada, obtivemos destruidores, seqüências de modelos, funções de seta e atribuições opcionais. Quando você usa intensamente todos esses recursos com uma única declaração var, isso prejudica a legibilidade.
fonte
Eu acho que a primeira maneira (vários vars) é a melhor, pois você pode acabar com isso (a partir de um aplicativo que usa o Knockout), que é difícil de ler na minha opinião:
fonte