JavaScript中的'和'有什么区别?


70

我看到了这个问题,我想知道JavaScript中的同一件事。

如果在JavaScript中创建字符串时使用字符'或字符',则应用程序的行为似乎相同。那么这两个字符有什么区别?

我使用'生成字符串的唯一优点是我可以执行以下操作:

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

代替:

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

我应该注意它们之间是否有重大区别?

Answers:


91

它们在所有意图和目的上都是等效的。如您所述,如果要在字符串中使用其中一个,则最好使用另一个来创建字符串。除此之外,都是一样的。


48

尽管从技术上讲Javascript并没有区别,但值得注意的是,单引号字符串本身不是有效的JSON。我认为人们会自动假设,因为JSON是有效的JS,所以有效的JS字符串也是有效的JSON,这不一定是正确的

例如, {'key': 'Some "value"'}无效的JSON,但有效{"key": "Some 'value'"}



5

根据Mozilla的说法,好的做法是在HTML中使用“”(不能使用“”),而在Javascript中保留“”(其中“”和“”都可以单独使用)...


2
:单引号可以在HTML中使用stackoverflow.com/questions/273354/...
GOTO 0

是的,根据标准,但是“某些HTML客户端(不是必需的浏览器)在单引号上存在兼容问题” ...因此,我建议遵循Mozilla的准则。
davidbourguignon 2014年

引用以来,您可以链接到Mozilla吗?例如:developer.mozilla.org/en-US/docs/Learn/JavaScript/First_steps/...
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"));

对于str1和str4,document.write将失败。那是区别,但是我不知道是否有解决方法可以使它们正常工作。


3
这些document.write在哪个浏览器中失败?我没有让他们失败。(一旦我在代码中添加了足够的

1

尝试这个:

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

Output : Uncaught SyntaxError: missing ) 
after argument list

现在尝试:

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

Output :  mama+"mama"

0

如上所述,没有区别,但是在某些情况下,您需要在字符串中使用“ /”。

我认为对于需要将字符串与变量连接的情况,更好的做法是使用模板字符串: Price: ${price}, Amount: ${amount}. Total: ${price*amount}

这样,您可以添加“和”,并连接变量。

更容易阅读,更容易编写。


-4

警告!!!!

它们是有区别的。当添加到数组时,您必须使用其中一个。当您使用两种不同类型的引号时,数组会感到困惑。

例:

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

array.push('pear');

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

array.push("pear");

2
您能否更详细地说明这一点。这不符合我的经验,也不符合我刚刚进行的测试。
斯蒂芬·劳赫
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.