和 " " 以及没有引号在 Javascript 中是啥意思?
Posted
技术标签:
【中文标题】' ' 和 " " 以及没有引号在 Javascript 中是啥意思?【英文标题】:What does ' ', and " ", and no quotes mean in Javascript?' ' 和 " " 以及没有引号在 Javascript 中是什么意思? 【发布时间】:2012-06-06 20:03:09 【问题描述】:我意识到我一直在它们之间切换,但不知道为什么,并且发现很难搜索。
【问题讨论】:
你能举个具体的例子吗? 字符串可以使用""
或''
,没关系(选择让您需要较少转义的那个("Mr. O'Neil"
或'I said "hi"'
)。数字不需要引用,例如12
.
【参考方案1】:
' '
和" "
是同一个东西;它们用于定义字符串文字。
不带引号的东西可以是标识符、关键字、非字符串文字、属性名称或数字(可能遗漏了一个)。
例子:
"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
【讨论】:
最后两个不会真正被视为标识符,不是吗?在我看来,它们是各自类型(数字和正则表达式)的文字语法,就像前两个字符串示例一样。 @amnotiam 你提出了一个有效的观点;我已将它们重新分类为文字 :) 谢谢! 啊,到了。 +1 只有在 stuff without quotes 类别下的其他东西(我能想到的)是运算符和语句终止符......如果你想计算的话,我想是空格。 @amnotiam hehe 非常正确,但我认为现在必须这样做,除非 OP 想要完整的语言分解;-) 是的,你已经涵盖了 OP 的要求,等等。【参考方案2】:' '
和 " "
用于引用字符串字面量并表示字符串,而没有引号的字面量是变量(变量名,常量),称为标识符,示例
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"';
【讨论】:
【参考方案3】:"
和'
可以互换(但需要一起使用)。
myObject["property"]
和 myObject.property
也可以互换。 $var foo = "property"; myObject[foo]
也是如此(根据下面的评论)。
【讨论】:
myObject[property]
获取以property的值命名的myObject的属性【参考方案4】:
一个快速的 jsfiddle 以及单引号和双引号转义控制代码等。
在最近的日子里,我遇到了未使用双引号的 HTML 错误,如果您查看 JSON 的规范,您会注意到它是在引用字符串文字时要求的双引号。因此,出于历史原因,我认为双引号是惯例。
但是!在编写服务器端 JS 的这些日子里,我必须承认我倾向于回到我的 C 根和双引号,我想要转义字符和单引号字符串,它们实际上是文字字符并且永远不可能包含转义字符(即使这是本质上是非生产性行为)。除此之外,现在我的大部分 JS 都是咖啡脚本,没有人写过优雅的 javascript,但 CS 是另一回事。
【讨论】:
以上是关于 和 " " 以及没有引号在 Javascript 中是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章
JSON Key 用双引号 "" 和根本没有双引号有啥区别? [复制]
shell中$后加引号有什么用($"string"和$'string')