JavaScript中的单引号和双引号有什么区别?

88

我看到这个问题,我想知道在JavaScript中的答案。

如果你在JavaScript中制作字符串时使用字符'或字符",应用程序似乎会表现相同。那么这两个字符之间有什么区别呢?

我唯一看到使用'构建字符串的优势是我可以做这样的事情:

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

改为:

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

它们之间是否存在显著差异,我需要注意什么吗?

8个回答

110

它们在所有实际目的上都是等效的。如果您想在字符串中使用任何一个,最好使用另一个来创建该字符串,正如您所指出的那样。除此之外,它们完全相同。


55
尽管在Javascript中没有技术上的差别,但值得注意的是单引号字符串本身不是有效的JSON。我认为人们会自动假设由于JSON是有效的JS,那么有效的JS字符串也是有效的JSON,这并不一定正确
例如,{'key': 'Some "value"'} 不是有效的JSON,而{"key": "Some 'value'"} 是。

22

没有区别。它存在的原因正是你所提到的。


6
根据Mozilla的说法,最好在HTML中使用“ ”(无法使用' '), 而在Javascript中保留' ' (其中“ ”和' '都可以随意使用)。

2
单引号可以在HTML中使用:https://dev59.com/DHVC5IYBdhLWcg3wfxU8 - GOTO 0
是的,根据标准来说没问题,但是“一些HTML客户端(不一定是浏览器)在单引号上可能存在兼容性问题”...因此我建议遵循Mozilla的指南。 - davidbourguignon
你能在引用Mozilla时提供链接吗?例如:https://developer.mozilla.org/en-US/docs/Learn/JavaScript/First_steps/Strings#Single_quotes_vs._double_quotes - orangecaterpillar

2
我认为还有一个区别。如果您执行以下操作:
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"));

document.write在str1和str4上会失败。这就是它们之间的区别,但我不知道是否有解决方法使它们正常工作。


4
哪个浏览器会导致那些document.write失败?我试过让它们失败了。(只要我在代码中添加足够的闭合括号) - Lee Kowalkowski

0
如上所述,在字符串中使用“/'时,除此之外没有任何区别。
我认为在需要将变量与字符串连接的情况下,更好的做法是使用模板字符串: 价格:${price},数量:${amount}。总计:${price*amount} 这样你就可以添加双引号和单引号,并连接变量。
阅读起来更容易,写起来也更容易。

0

试试这个:

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

Output : Uncaught SyntaxError: missing ) 
after argument list

现在尝试:
console.log('mama+"mama"')

Output :  mama+"mama"

它们是等价的!但有时您想在字符串内部使用 "",这就是为什么我们有 '


-4

警告!!!

这里有一个区别。当添加到数组时,您必须使用其中之一。如果您使用两种不同类型的引号,数组会变得混乱。

例如:

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

array.push('pear');

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

array.push("pear");

2
你能详细解释一下吗?这与我的经验以及我刚刚进行的测试不符。 - Stephen Rauch

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接