我意识到我一直在它们之间切换,不知道为什么,并且发现很难搜索。
4 回答
' '
和" "
是同一个东西;它们用于定义字符串文字。
不带引号的东西可以是标识符、关键字、非字符串文字、属性名称或数字(可能遗漏了一个)。
例子:
"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"
' (single quote)
你可能会问,和之间有什么区别" (Double quote)
不同之处在于,"
如果其中的字符串具有特殊字符,则它们需要转义。例子:
Variable = "hi " there"; ---> 在这里你需要转义"
里面的字符串,比如
Variable = "hi \" there";
但是如果使用,'
则不需要转义(除非'
字符串中有额外的)。你可以喜欢
var = 'Hello " World"';
"
并且'
可以互换(但需要一起使用)。
myObject["property"]
并且myObject.property
可以互换。 $var foo = "property"; myObject[foo]
以及(根据下面的评论)。
一个快速的 jsfiddle 以及单引号和双引号转义控制代码等。
在最近的日子里,我遇到了来自 HTML 的错误,其中没有使用双引号,如果你查看JSON的规范,你会注意到它是在引用字符串文字时要求的双引号。因此,出于历史原因,我认为双引号是惯例。
然而!在编写服务器端 JS 的这些日子里,我必须承认我倾向于回到我的 C 根和双引号,我想要转义字符和单引号字符串,它们实际上是文字字符并且永远不可能包含转义字符(即使这是本质上是非生产性行为)。除了现在我的大部分 JS 都是coffeescript,没有人为了优雅而写过 javascript,尽管 CS 是一个不同的鱼壶。