3 ms·
If 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
by YorkianTones 11y ago
If 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.
- vog 11y agoFor such cases I find the Python style most appropriate. It says that you use some consistent default (e.g. always single quote), but for all a strings that require escaping, you should use the delimiter with the least (preferably no) escaping. Note that this is easier in Python than JavaScript because Python provides more string delimiters: 'He said hello.' 'He said "hello".' "Don't say hello.' '''Don't say "hello".''' r'Some regex\sstuff'
- icebraining 11y agoThe only problem is that sometimes it leads to bugs when people mix different delimiters - like in your third example :)
- jaredmcateer 11y agoNote that as of ES6 there is the template string literals using backticks so it looks like JS is at parity with your example. 'He said hello.' 'He said "hello".' "Don't say hello." `Don't say "Hello".` /some regex\sstuff/ Mainstream support just isn't there yet.
- marcoms 11y agoYou could use ` backticks instead and use both " and ' in strings without worry