10 ms·
Regarding using single quotes for strings (https://github.com/airbnb/javascript#6.1 https://github.com/airbnb/javascript#6.1), I found it interesting that it's
by elisee 11y ago
Regarding using single quotes for strings (https://github.com/airbnb/javascript#6.1 https://github.com/airbnb/javascript#6.1), I found it interesting that it's one of the rare sections where there's no rationale offered.
I guess it's just a stylistic choice in the end, but when we set up our own internal/informal style guide, my teammate and I spent a little while trying to come up with a justification for single vs double quotes. We ended up choosing double quotes based on the fact that JSON already made that decision for us: it requires strings be double-quoted.
(Although again, it's far from an important matter, as long as you're consistent), anybody has interesting rationales to share in favor of single quotes?
- _jnc 11y agoAt least in Ruby, you can only do string interpolation with strings in double quotes.
- elisee 11y agoJavaScript up to ES5 doesn't support string interpolation at all. ES6 introduces backticks `before${var}after` for that, but there's still no functional difference between single and double quotes.
- mixmastamyk 11y agoInteresting they chose that, considering it's deprecated in bash and python.
- sprobertson 11y agoCoffeescript as well. I try to use single quotes whenever possible, so if a string is templated it stands out a bit with the double quotes.
- NhanH 11y agoIf JSON requires the string to be double-quoted, then it's more convenient to use singe quotes, since your embedded JSON string (if you ever used it) won't need to have its quotes escaped.
- elisee 11y agoInteresting. Is that common in your workflow to embed JSON as string literals in JavaScript? Never had to do that. I'd probably use ES6 backticks, so as to have multiline support and skip the need to escape both single and double quotes.
- adrusi 11y agoRight, why write '{ "foo": "bar" }' when you could write JSON.stringify({ foo: "bar" }) and get a static guarantee of valid JSON?
- clintonc 11y agoMy rationale for single quotes is also that JSON chose for you -- if you have JSON-formatted strings in your javascript and you use single quotes for your strings, you don't have to escape the double quotes.
- Void_ 11y agoTyping single quotes is one keystroke ('), typing double quotes is two (shift+').
- teamhappy 11y ago> Typing single quotes is one keystroke Not on my keyboard. Also, C uses double quotes (and JSON, and many, many more languages). That used to be my rationale. These days I get away with saying that 'foo' and `foo` look too similar.
- mixmastamyk 11y agoI believe the most commonly ones used do.
- omribahumi 11y agoWhat keyboard locale(?) is that?
- teamhappy 11y agoI'm german, but the layout is used in other countries as well: https://en.wikipedia.org/wiki/QWERTZ https://en.wikipedia.org/wiki/QWERTZ
- deleted 11y ago[deleted]
- jaredmcateer 11y agoWe enforce double quotes for html attributes, mainly because we enforce single quotes for PHP so when you're writing mixed HTML/PHP in the view scripts we don't need to escape any of them. Single quotes for javascript would allow for the same, though we also have a strict no inline javascript policy as well. Mainly our rationale is, pick one and be consistent. Single quotes where there first so they win, same deal with indentation amount.
- YorkianTones 11y agoIf you use contractions like don\'t inside of a string then you need to escape the apostrophe if you\'re using single quotes, which is annoying and can make the string a bit harder for humans to parse. I like the aesthetics of double-quotes better too, though that\'s not a compelling reason.
- Bahamut 11y agoYou can use template strings in ES6 and avoid that whole problem.
- elros 11y agoWell, one simple typographical way to solve this is not to use a quotation character (') when what is meant is an apostrophe character (’).
- vog 11y agoOuch, I'd be afraid that this may become the source of subtle bugs.
- JimmyM 11y agoI thought that (') was the apostrophe character, although it doesn't look like one. (Source: http://www.cl.cam.ac.uk/~mgk25/ucs/apostrophe.html http://www.cl.cam.ac.uk/~mgk25/ucs/apostrophe.html) The same source agrees with you elsewhere though, making my distinction pedantic. (http://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html http://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html) I can't personally imagine this solution would be any less confusing, given that the new preferred apostrophe character according to this source is specifically a right single quote character.
- recmo 11y ago"Don’t say “Hello”" Proper typography solves all. My toy programming language uses “ and ” for string literals. It counts nesting, so you can write “Don’t say “Hello””. There is no escaping. In fact, you can quote any piece of code by simply enclosing it in “ and ”. Code is commented out by turning it into an unused string literal.
- adzicg 11y agowe use double quotes for HTML and single quotes for JS. that makes it easy to embed HTML snippets in Js code and JS snippets in HTML attribute values without escaping.
- mc808 11y agoI use double quotes for most strings and single quotes for characters, just because it's perfectly valid without having to learn new habits. If I have HTML in a JavaScript string, I don't quote the attributes at all unless necessary, instead focusing on more pressing matters like how to get that shit out of my JavaScript.
- masklinn 11y ago> We ended up choosing double quotes based on the fact that JSON already made that decision for us: it requires strings be double-quoted. My personal style guide is to copy Erlang: double quotes for text, single quotes for programmatic strings (atoms/symbols). The single quote is slightly more convenient to type on a qwerty keyboard, but text regularly contains single quotes (apostrophes). It also provides a semantic visual shortcut.
- applecore 11y agoCoffeeScript follows a more common style: double-quoted strings for interpolated values and single-quoted strings are literal.
- rhgraysonii 11y agoAlso: Ruby/Opal (also transpiled)
- bambax 11y agoSingle quotes are a big big pain if you have strings with apostrophes (which is common in names: O'Brian, d'Alembert). You can escape them, but that's an extra pain and strain on readability; you can use some other character but that will usually cause problems down the road. Why so many people insist on single quotes is a mystery...
- dangle 11y agoIt looks like they reserve double quotes for JSX attributes: https://github.com/airbnb/javascript/tree/master/react#quotes https://github.com/airbnb/javascript/tree/master/react#quote...
- lee 11y agoThe rationale I have for using single quotes over double quotes in javascript is that when embedding HTML elements, attributes are often quoted in double quotes. So it's much nicer to write '<a href="www.google.com">Google</a>' than to constantly escape argument strings.
- savanaly 11y agoSingle quotes are less busy. Strings are all over my angular app usually, so having half the number of little lines flying around is much more pleasing to my eyes.