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></div>'; Instead of:
var toAppend = "<div id=\"myDiv1\"></div>"; Is there any significant difference between them that I should be aware of?
8 Answers
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.
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.
There's no difference. The reason for its existence is exactly what you mentioned
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)...
3I 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.
1As 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.
Try this:
console.log("mama+"mama"") Output : Uncaught SyntaxError: missing ) after argument list Now try:
console.log('mama+"mama"') Output : mama+"mama" They are equivalent! but sometimes you want to use "" inside a string, and that why we have '
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"); 1