console.log("double");
vs console.log('single');
Vejo cada vez mais bibliotecas JavaScript por aí usando aspas simples ao manipular strings. Quais são os motivos para usar um sobre o outro? Eu pensei que eles eram praticamente intercambiáveis.
javascript
string
conventions
aemkei
fonte
fonte
alert("It's \"game\" time.");
oualert('It\'s "game" time.');
?Respostas:
O motivo mais provável para o uso de single vs double em diferentes bibliotecas é a preferência do programador e / ou a consistência da API. Além de consistente, use o que melhor se adequar à sequência.
Usando o outro tipo de citação como literal:
Isso pode ser complicado:
Outra opção, nova no ES6, são literais de modelo que usam o
back-tick
caractere:Literais de modelo oferecem uma sintaxe limpa para: interpolação variável, seqüências de várias linhas e muito mais.
Observe que o JSON é formalmente especificado para usar aspas duplas, o que pode ser considerado dependendo dos requisitos do sistema.
fonte
alert('It’s “game” time')
vs.alert("It’s “game” time")
- não importa. Você só precisa escapar nos casos (raros) onde o sinal nobre simples ou dupla'
,"
é realmente apropriado.Se você estiver lidando com JSON, observe que, estritamente falando, as strings JSON devem ser citadas duas vezes. Claro, muitas bibliotecas também suportam aspas simples, mas eu tive grandes problemas em um dos meus projetos antes de perceber que a citação única de uma sequência não é, de fato, de acordo com os padrões JSON.
fonte
var jsonString = '{"key1":"value1"}';
(Não que eu recomendo a construção manualmente JSON.).stringify()
.Não existe uma solução melhor ; no entanto, gostaria de argumentar que aspas duplas podem ser mais desejáveis às vezes:
"
para identificar uma passagem do texto citado. Se usarmos uma única citação'
, o leitor pode interpretá-la mal como uma contração. O outro significado de uma passagem de texto cercada por'
indica o significado "coloquial". Faz sentido permanecer consistente com os idiomas pré-existentes, e isso pode facilitar a aprendizagem e a interpretação do código."I'm going to the mall"
, contra a versão de outro modo escapou:'I\'m going to the mall'
.Aspas duplas significam uma sequência em muitos outros idiomas . Quando você aprende um novo idioma como Java ou C, aspas duplas são sempre usadas. Em Ruby, PHP e Perl, cadeias de citação única não implicam escapes de barra invertida, enquanto aspas duplas as suportam.
A notação JSON é escrita com aspas duplas.
No entanto, como outros já declararam, é mais importante permanecer consistente.
fonte
A seção 7.8.4 da especificação descreve a notação literal de cadeias. A única diferença é que DoubleStringCharacter é "SourceCharacter, mas não aspas duplas" e SingleStringCharacter é "SourceCharacter, mas não aspas simples". Portanto, a única diferença pode ser demonstrada assim:
Portanto, depende da quantidade de cotação que você deseja fazer. Obviamente, o mesmo se aplica a aspas duplas em strings entre aspas duplas.
fonte
"{\"name\": \"Peter\"}"
vs'{"name": "Peter"}'
? É certo que você poderia dizer que essa é a mesma diferença, mas certamente afetaria sua decisão de uma maneira diferente do exemplo acima.Citações simples
Eu gostaria que as aspas duplas fossem o padrão, porque elas fazem um pouco mais de sentido , mas continuo usando aspas simples porque elas dominam a cena.
Citações simples:
Sem preferência:
Aspas duplas:
.eslintrc
)fonte
Eu gostaria de dizer que a diferença é puramente estilística, mas estou realmente tendo minhas dúvidas. Considere o seguinte exemplo:
No Safari, Chrome, Opera e Internet Explorer (testado no IE7 e IE8), isso retornará o seguinte:
No entanto, o Firefox produzirá um resultado ligeiramente diferente:
As aspas simples foram substituídas por aspas duplas. (Observe também como o espaço de recuo foi substituído por quatro espaços.) Isso dá a impressão de que pelo menos um navegador analisa JavaScript internamente como se tudo estivesse escrito com aspas duplas. Pode-se pensar que o Firefox leva menos tempo para analisar o JavaScript se tudo já estiver escrito de acordo com esse 'padrão'.
O que, a propósito, me deixa um panda muito triste, pois acho que aspas simples parecem muito mais agradáveis no código. Além disso, em outras linguagens de programação, eles costumam ser mais rápidos do que aspas duplas, portanto, só faria sentido se o mesmo se aplicasse ao JavaScript.
Conclusão: acho que precisamos fazer mais pesquisas sobre isso.
Edit: Isso pode explicar os resultados dos testes de Peter-Paul Koch em 2003.
Edit 2014: As versões modernas do Firefox / Spidermonkey não fazem mais isso.
fonte
.toString
mas agora retorna a cópia original. O Firefox moderno não terá esse problema.Se você estiver usando JavaScript embutido (sem dúvida uma coisa "ruim", mas evitando essa discussão), as aspas simples são sua única opção para literais de string, acredito.
por exemplo, isso funciona bem:
Mas você não pode agrupar o "oi" entre aspas duplas, por qualquer método que eu saiba. Mesmo
"
qual teria sido meu melhor palpite (já que você está escapando de aspas em um valor de atributo de HTML) não funciona para mim no Firefox.\"
também não funcionará porque, neste momento, você está escapando para HTML, não para JavaScript.Portanto, se o nome do jogo for consistente e você usar JavaScript embutido em partes do seu aplicativo, acho que as aspas simples são as vencedoras. Alguém por favor me corrija se eu estiver errado.
fonte
<a onclick="alert(%22hi%22);">hi</a>
- a partir da memória, isso funciona, embora possa estar no atributo href<a href="javascript:alert(%22hi%22);">hi</a>
alert("hi")
não é JavaScript válido. Mas os valores dos atributos são codificados. w3.org/TR/html4/intro/sgmltut.html#didx-attribute"
é a maneira correta de escapar de aspas duplas dentro de um atributo HTML. Funciona bem no Firefox. @ Denilson, XML (e, portanto, XHTML) permite aspas simples e duplas. Veja oAttValue
literal na especificação XML em w3.org/TR/REC-xml/#d0e888 .Tecnicamente, não há diferença, é apenas uma questão de estilo e convenção.
Douglas Crockford recomenda o uso de aspas simples para strings internas e aspas duplas para externas (por externas, queremos dizer aquelas que serão exibidas ao usuário do aplicativo, como mensagens ou alertas).
Eu pessoalmente sigo isso.
ATUALIZAÇÃO: Parece que o Sr. Crockford mudou de idéia e agora recomenda o uso de aspas duplas em todo :)
fonte
A rigor, não há diferença de significado; então a escolha se resume à conveniência.
Aqui estão vários fatores que podem influenciar sua escolha:
fonte
'
está00100111
em binário, enquanto"
está00100010
em binário. Assim, as aspas duplas ocupam metade do poder de armazenamento que as aspas simples. Essa é a diferença ali.Vejamos o que uma referência faz.
Dentro do jquery.js, todas as strings são aspas duplas.
Então, a partir de agora, usarei cadeias de caracteres com aspas duplas. (Eu estava usando single!)
fonte
Apenas mantenha a consistência no que você usa. Mas não diminua seu nível de conforto.
Atualização ES6
Usando a sintaxe literal do modelo .
fonte
É principalmente uma questão de estilo e preferência. Existem algumas explorações técnicas bastante interessantes e úteis nas outras respostas, então talvez a única coisa que eu possa acrescentar seja oferecer um pequeno conselho mundano.
Se você estiver codificação em uma empresa ou equipe, então provavelmente é uma boa idéia seguir a "casa de estilo".
Se você está sozinho cortar alguns projetos paralelos, em seguida, olhar para alguns líderes proeminentes da comunidade. Por exemplo, digamos que você entre no Node.js. Dê uma olhada nos módulos principais, por exemplo, underscore.js ou express e veja qual convenção eles usam, e considere seguir isso.
Se ambas as convenções são igualmente utilizados, em seguida, adiar para o seu pessoal
preferência.
Se você não tem preferência pessoal, em seguida, jogar uma moeda.
Se você não tem uma moeda, então a cerveja está em mim;)
fonte
Espero que eu não estou adicionando algo óbvio, mas eu tenho lutado com Django e Ajax e JSON sobre este assunto.
Supondo que em seu código HTML você use aspas duplas, como normalmente deveria ser, sugiro usar aspas simples para o restante em JavaScript.
Então, eu concordo com @ady, mas com alguns cuidados.
Minha conclusão é: No JavaScript, provavelmente não importa, mas assim que você o incorpora ao HTML ou algo semelhante, você começa a ter problemas. Você deve saber o que realmente está escapando, lendo, passando sua string.
Meu caso simples foi:
Você pode identificar o \ 'no terceiro campo do showThis.
As aspas duplas não funcionaram!
Está claro o porquê, mas também está claro por que devemos ficar com aspas simples ... .. eu acho ..
Nesse caso, é uma incorporação HTML muito simples, o erro foi gerado por uma cópia / colar simples a partir de um código JavaScript 'com aspas duplas'.
Então, para responder à pergunta:
Tente usar aspas simples enquanto estiver em HTML. Pode salvar alguns problemas de depuração ...
fonte
Não tenho certeza se isso é relevante no mundo de hoje, mas as aspas duplas costumavam ser usadas para conteúdo que precisava ter caracteres de controle processados e aspas simples para strings que não eram.
O compilador executará a manipulação de cadeias de caracteres em uma cadeia de caracteres dupla entre aspas, deixando uma única cadeia de caracteres entre aspas literalmente intocada. Isso costumava levar os desenvolvedores 'bons' a optarem por usar aspas simples para strings que não continham caracteres de controle como
\n
ou\0
(não processados entre aspas simples) e aspas duplas quando precisavam que a string fosse analisada (a um pequeno custo em ciclos de CPU para processando a string).fonte
Se você estiver usando jshint , ocorrerá um erro se você usar uma cadeia de aspas duplas.
Usei-o através do suporte Yeoman do AngularJS, mas talvez exista alguma maneira de configurar isso.
A propósito, quando você manipula HTML em JavaScript, é mais fácil usar aspas simples:
E pelo menos o JSON está usando aspas duplas para seqüências reprensivas.
Não há uma maneira trivial de responder à sua pergunta
fonte
Falando sobre desempenho, as cotações nunca serão o seu gargalo, no entanto, o desempenho é o mesmo nos dois casos.
Falando sobre a velocidade de codificação, se você usar
'
para delimitar uma string, precisará escapar de"
aspas. É mais provável que você precise usar"
dentro da string, por exemplo:Então, eu prefiro usar
'
para delimitar a string, então tenho que escapar menos caracteres.fonte
Uma razão (boba) para usar aspas simples seria que elas não exigem que você pressione a tecla Shift para digitá-las, enquanto as aspas duplas o fazem. (Estou supondo que a string média não exija escape, o que é uma suposição razoável.) Agora, vamos supor que todos os dias eu codifique 200 linhas de código. Talvez nessas 200 linhas eu tenha 30 citações. Talvez digitar uma aspas duplas leve 0,1 segundos a mais do que digitar uma aspas simples (porque eu tenho que pressionar a tecla Shift). Então, em qualquer dia, eu perco 3 segundos. Se eu codifico dessa maneira por 200 dias por ano por 40 anos, perdi 6,7 horas da minha vida. Alimento para o pensamento.
fonte
var description = "This is a \"quick\" test";
on um teclado inglês.Para um teclado inglês, seu dedo mindinho deve passar da tecla Shift esquerda para a tecla Q na linha superior, em vez de passar da tecla A para a tecla Q. Em outras palavras, ele deve percorrer o dobro da distância . Eu não tenho certeza onde estão as chaves no teclado alemão, mas eu tenho certeza que é um exemplo análogo.A favor de aspas simples
Além disso, o HTML embutido é normalmente um anti-padrão. Preferir modelos.
Novamente, você não precisa construir o JSON dessa maneira. JSON.stringify () geralmente é suficiente. Caso contrário, use modelos.
A favor de aspas duplas
A favor de ambos
Não há diferença entre os dois em JavaScript. Portanto, você pode usar o que for conveniente no momento. Por exemplo, os seguintes literais de sequência produzem a mesma sequência:
Aspas simples para cadeias internas e duplas para externas. Isso permite distinguir constantes internas das seqüências que serão exibidas para o usuário (ou gravadas no disco etc.). Obviamente, você deve evitar colocar o último em seu código, mas isso nem sempre pode ser feito.
fonte
Mais uma coisa que você pode considerar como uma razão para a mudança de aspas duplas para aspas simples é o aumento da popularidade dos scripts do lado do servidor. Ao usar o PHP, você pode passar variáveis e analisar funções javascript usando strings e variáveis no PHP.
Se você escrever uma string e usar aspas duplas no seu PHP, não precisará escapar de nenhuma das aspas simples e o PHP recuperará automaticamente o valor das variáveis para você.
Exemplo: preciso executar uma função javascript usando uma variável do meu servidor.
Isso me poupa muito trabalho em ter que lidar com a junção de strings, e posso chamar efetivamente um javascript do PHP. Este é apenas um exemplo, mas esse pode ser um dos vários motivos pelos quais os programadores estão usando aspas simples em javascript.
Cite documentos PHP : "O recurso mais importante das strings com aspas duplas é o fato de os nomes das variáveis serem expandidos. Consulte a análise de strings para obter detalhes."
fonte
Há pessoas que afirmam ter diferenças de desempenho: segmento antigo da lista de discussão . Mas não consegui encontrar nenhum deles para ser confirmado.
O principal é analisar que tipo de aspas (duplas ou simples) você está usando dentro da sua string. Ajuda a manter baixo o número de fugas. Por exemplo, quando você trabalha com html dentro de suas strings, é mais fácil usar aspas simples, para que você não precise escapar de todas as aspas duplas ao redor dos atributos.
fonte
Eu usaria aspas duplas quando aspas simples não puderem ser usadas e vice-versa:
Ao invés de:
fonte
Não há diferença entre aspas simples e duplas no JavaScript.
A especificação é importante:
Talvez haja diferenças de desempenho, mas elas são absolutamente mínimas e podem mudar todos os dias de acordo com a implementação dos navegadores. Discussões adicionais são inúteis, a menos que seu aplicativo JavaScript tenha centenas de milhares de comprimento.
É como uma referência se
é mais rápido que
(espaços extras)
hoje, em um navegador e plataforma específicos, etc.
fonte
Ao usar o CoffeeScript, uso aspas duplas. Concordo que você deve escolher um deles e cumpri-lo. O CoffeeScript fornece interpolação ao usar aspas duplas.
O ES6 está usando back ticks (`) para seqüências de caracteres de modelo. O que provavelmente tem um bom motivo, mas, ao codificar, pode ser complicado alterar o caractere literal de string de aspas ou aspas duplas para back ticks para obter o recurso de interpolação. O CoffeeScript pode não ser perfeito, mas usar o mesmo caractere de literal de string em todos os lugares (aspas duplas) e sempre poder interpolar é um recurso interessante.
fonte
Se você está alternando entre JavaScript e C #, é melhor treinar os dedos para a convenção comum, que é aspas duplas.
fonte
Eu estive executando o seguinte cerca de 20 vezes. E parece que aspas duplas são cerca de 20% mais rápidas.
A parte divertida é que, se você alterar as partes 2 e 1, as aspas simples são cerca de 20% mais rápidas.
fonte
var dummy_date = new Date()
a começarNão há nenhuma diferença estrita; portanto, é principalmente uma questão de gosto e do que está na string (ou se o próprio código JS estiver em uma string), para manter baixo o número de escapes.
A legenda da diferença de velocidade pode vir do mundo PHP, onde as duas aspas têm um comportamento diferente.
fonte
Depois de ler todas as respostas que dizem que talvez seja mais rápido ou que tenha vantagens, eu diria que as aspas duplas são melhores ou talvez mais rápidas também porque o compilador de fechamento do Google converte aspas simples em aspas duplas.
fonte
Agora que é 2020, devemos considerar uma terceira opção para o Javascript: o backtick único para tudo.
Isso pode ser usado em qualquer lugar, em vez de aspas simples ou duplas.
Ele permite que você faça todas as coisas!
Permite várias linhas: `
este
Faz
Javascript
Melhor!
`
Também não causa perda de desempenho ao substituir os outros dois: https://medium.com/javascript-in-plain-english/are-backticks-slower-than-other-strings-in-javascript-ce4abf9b9fa
fonte
Se sua fonte JS for:
A fonte HTML será:
ou para HTML5
JS permite matrizes assim:
Mas se você o especificar, será por uma razão compatível:
Tenho certeza que isso leva algum tempo.
fonte
Apenas para adicionar meus 2 centavos: Ao trabalhar com JS e PHP há alguns anos, me acostumei a usar aspas simples para poder digitar o caractere de escape ('\') sem precisar escapar também. Normalmente, eu o usava ao digitar cadeias brutas com caminhos de arquivo etc. ( http://en.wikipedia.org/wiki/String_literal#Raw_strings )
De qualquer forma, minha convenção acabou se tornando o uso de aspas simples em cadeias brutas do tipo identificador, como
if (typeof s == 'string') ...
(nas quais caracteres de escape nunca seriam usados - nunca) e aspas duplas nos textos , como "Ei, e aí?". Também uso aspas simples nos comentários como uma convenção tipográfica para mostrar nomes de identificadores. Esta é apenas uma regra de ouro e interrompo apenas quando necessário, como ao digitar seqüências de caracteres HTML'<a href="#"> like so <a>'
(embora você também possa reverter as aspas aqui). Também sei que, no caso do JSON, aspas duplas são usadas para os nomes - mas fora disso, pessoalmente, prefiro aspas simples quando a fuga nunca é necessária para o texto entre aspas - comodocument.createElement('div')
.Resumindo, e como alguns já mencionaram / aludiram, escolha uma convenção, cumpra-a e desvie-se apenas quando necessário.
fonte