JavaScript 中的“和”有什么区别?

我看到了 这个问题,我想知道同样的事情在 JavaScript 中。

在 JavaScript 中生成字符串时,如果使用字符’或字符”,应用程序的行为似乎也是一样的。那么这两个角色之间有什么区别呢?

我看到的用来构建字符串的唯一好处是我可以做这样的事情:

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

而不是:

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

他们之间有什么重要的区别吗?

57188 次浏览

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.

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

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.

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.

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)...

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");

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.