我意识到我一直在不知道为什么的情况下在它们之间切换,而且很难搜索。
我意识到我一直在不知道为什么的情况下在它们之间切换,而且很难搜索。
' '
和 " "
是相同的东西,它们用于定义字符串文字。
没有引号的内容可能是标识符、关键字、非字符串文字、属性名称或数字(可能漏掉了一个)。
示例:
"hello world" literal (string)
'hello world' literal (string) with same contents
document identifier (object)
{ a: 1 } property name
if keyword (start conditional statement)
3.4 literal (number)
/abc/ literal (regex object)
单引号包含的字符串文字不需要转义双引号,反之亦然,例如:
'<a href="">click me</a>' HTML containing double quotes
"It's going to rain" String containing single quote
' '
和 " "
用于引用字符串字面值,代表字符串,而没有引号的字面值则是变量(变量名、常量),称为标识符,例如:
variable = 'Hello'; (Here `variable` is identifier and 'Hello' is string literal)
var = "Ho There"
'
和双引号"
之间有什么区别?"
Variable = "hi \" there";
'
,则不需要转义(除非字符串中有额外的'
)。您可以像这样编写代码:var = 'Hello " World"';
"
和 '
是可以互换使用的(但是需要成对使用)。
myObject["property"]
和 myObject.property
也是可以互换使用的。 $var foo = "property"; myObject[foo]
也是可行的。(参见下面的注释)
myObject[property]
获取名为 property
值的属性在 myObject
对象中的值。 - pbfy0快速 jsfiddle 测试, 单引号和双引号都可以转义控制码等。
最近我遇到了由于没有使用双引号而导致 HTML 出错的情况,如果你查看 JSON 的规范,你会发现在引用字符串文字时需要使用双引号。因此,我认为历史原因上常见的做法是使用双引号。
然而!在编写服务器端 JS 的这些日子里,我必须承认我倾向于回到我的 C 根源,其中我使用双引号代替转义字符,单引号字符串实际上是文本字符,并且不太可能包含转义字符(尽管这基本上是无效行为)。另外,我的大部分 JS 现在都是 coffeescript ,毕竟没有人为了优雅而编写 javascript,但 CS 是一种完全不同的语言。
""
或''
,没有区别(选择使转义更少的一个("Mr. O'Neil"
或'I said "hi"'
))。数字不需要用引号括起来,例如12
。 - gen_Eric