74

I saw this question and I am wondering about the same thing in JavaScript.

If you use the character ' or the character " when making strings in JavaScript, the application seems to behave the same. So what is the difference between these two characters?

The only advantage I have seen in using ' to build strings is that I can do stuff like:

var toAppend = '<div id="myDiv1"></div>';

Instead of:

var toAppend = "<div id=\"myDiv1\"></div>";

Is there any significant difference between them that I should be aware of?

Community
  • 1
  • 1
fmsf
  • 33,514
  • 48
  • 140
  • 190

8 Answers8

94

They are equivalent for all intents and purposes. If you want to use either one inside a string, it is a good idea to use the other one to create the string, as you noted. Other than that, it's all the same.

Paolo Bergantino
  • 449,396
  • 76
  • 509
  • 431
49

Although not technically a difference in Javascript, its worth noting that single quoted strings are not valid JSON, per se. I think that people automatically assume that since JSON is valid JS, that valid JS strings are also valid JSON, which isn't necessarily true.

E.g., {'key': 'Some "value"'} is not valid JSON, whereas {"key": "Some 'value'"} is.

B Robster
  • 34,955
  • 14
  • 82
  • 116
21

There's no difference. The reason for its existence is exactly what you mentioned

Philippe Leybaert
  • 155,903
  • 29
  • 200
  • 218
5

Good practice, according to Mozilla, is to use " " in HTML (where ' ' cannot be used) while reserving ' ' in Javascript (where both " " and ' ' can be use indifferently)...

  • 2
    Single quotes can be used in HTML: http://stackoverflow.com/questions/273354/are-single-quotes-allowed-in-html – GOTO 0 Dec 26 '13 at 09:48
  • Yes, according to the standard, but "some HTML clients (not necessary browsers) have compatibly issues on single quoting"... Therefore I suggest to follow Mozilla's guidelines. – davidbourguignon Jan 15 '14 at 13:19
  • Could you link to Mozilla since you're citing them? For example: https://developer.mozilla.org/en-US/docs/Learn/JavaScript/First_steps/Strings#Single_quotes_vs._double_quotes – orangecaterpillar Jan 02 '21 at 18:11
2

I think there is another difference. If you do the following

var str1 = 'The \' character';
var str2 = 'The " character';
var str3 = "The ' character";
var str4 = "The \" character";
document.write(str1.replace("'", "%26"));
document.write(str2.replace('"', "%22"));
document.write(str3.replace("'", "%26"));
document.write(str4.replace('"', "%22"));

The document.write will fail for str1 and str4. That is the difference, but I don't know if there is a workaround to make them work.

kurdtpage
  • 2,734
  • 1
  • 21
  • 22
  • 3
    In which browser do those document.writes fail? I failed to get them to fail. (Once I put enough closing brackets into that code) – Lee Kowalkowski Jun 21 '13 at 08:30
1

Try this:

console.log("mama+"mama"")

Output : Uncaught SyntaxError: missing ) 
after argument list

Now try:

console.log('mama+"mama"')

Output :  mama+"mama"
Pang
  • 8,605
  • 144
  • 77
  • 113
Eran Peled
  • 373
  • 2
  • 6
0

As written above, there is no difference but for situation you need to use "/' inside a string.

I think a better practice for situation you need to concatenate strings with variables is using a template strings: Price: ${price}, Amount: ${amount}. Total: ${price*amount}

That's way you can add " and ', and concatenate variables.

Much easier to read, much easier to write.

Eyal Segal
  • 41
  • 1
  • 9
-5

WARNING!!!!

There is a difference. When adding to arrays, you have to use one or the other. The array gets confused when you use two different types of quotes.

Example:

//WILL NOT WORK
var array = ["apple","orange","banana"];

array.push('pear');

//WILL WORK
var array = ["apple","orange","banana"];

array.push("pear");
Pang
  • 8,605
  • 144
  • 77
  • 113