前端开发 JavaScript 前端工程师
JavaScript 中字符串变量使用单引号和双引号的利弊?
最近在做一些规范的工作,这个点没想明白,到底单引号和双引号有啥利弊,为什么有的规范推荐双引号,我个人习惯了使用单引号。
纯json我知道为啥要使用双引号,因为很多语言只能解析双引号的格式,为了接口通用性,必须使用双引号来包围key和value,但是一般的funciton里声明的字符串变量呢?
纯json我知道为啥要使用双引号,因为很多语言只能解析双引号的格式,为了接口通用性,必须使用双引号来包围key和value,但是一般的funciton里声明的字符串变量呢?
1 条评论
按投票排序 按时间排序
17 个回答
16
赞同
反对,不会显示你的姓名
javascript,php 的来说一下我的习惯。
一个主要的原因嘛,这个也是习惯问题(当然,选择了一种以后就要全部统一哦)。
首先HTML 是这样的:
一个主要的原因嘛,这个也是习惯问题(当然,选择了一种以后就要全部统一哦)。
首先HTML 是这样的:
class="zu-global-notify" id="zh-global-message">
前端嘛,不管是 js 还是 php,都免不了 HTML。一般 HTML 习惯是属性都用双引号。那么当遇到 js 和 php 里要用 HTML string 的时候,就是这样:
// js
var str = '';
// php
$str = '';
$str2 = '.$someClass.'" id="zh-global-message">';
然后也有少按 shift 的原因在里面,毕竟 js 里没区别,在 php 里要用变量也都是 「'str'.$var.'ing'」搞定。
P.S. 前端里面(可能我看英文圈子比较多,国内不详),用 ' 应该是随大流的习惯,也就是说,遇到代码风格一致的可能性会高一些,这样写代码也省一点事儿。
P.S. 2 让我想到类似的一个代码风格的问题,
if ( condition ) {
// do something
}
if ( condition )
{
// do something
}
一阵血雨腥风啊,不同语言习惯的人真的不能在一起(写代码)。
编辑于 2013-06-07
2 条评论
感谢
收藏
• 没有帮助
•
• 作者保留权利
1
赞同
反对,不会显示你的姓名
在js中拼接字符串 我会使用 单引号
其余(包括coffeescript)我会使用双引号
原因: 单音号在拼接字符串的时候,尤其是拼接html字符串 单音号的好处最为突出 因为我们通常都喜欢用双引号来作为html里的标识 eg: id="_id"
ps: 顺便说一句 在coffeescript 中 拼接变量 必须得使用 双引号
编辑于 2013-06-07
添加评论
感谢
收藏
• 没有帮助
•
• 作者保留权利
2
赞同
反对,不会显示你的姓名
单引号。。。。。。因为双引号要多按shift。。。
发布于 2013-06-07
1 条评论
感谢
收藏
• 没有帮助
•
• 作者保留权利
8
赞同
反对,不会显示你的姓名
平时主要用 Python,为了保持风格一致,我一般都用单引号,优点是少按一个 shift 键。如果你每天写 100 个引号,一年就能少按 3 万多次按键哦。
发布于 2013-06-07
2 条评论
感谢
收藏
• 没有帮助
•
• 作者保留权利
2
赞同
反对,不会显示你的姓名
之前在前端开发有做过法语国际化相关的工作,法语的单词会有单引号存在(比如L'amour),如果这样的单词外面在包一层单引号... 所以留下的习惯就是能用双引号的地方都用双引号
发布于 2015-07-30
添加评论
感谢
收藏
• 没有帮助
•
• 作者保留权利
0
赞同
反对,不会显示你的姓名
1. 可以少按shift。
2. 变量中常有html片段,html片段都用的双引号。
直到我最近做法语站,这法语中包含了很多的单引号,让我痛苦不堪。
发布于 2013-07-19
1 条评论
感谢
收藏
• 没有帮助
•
• 作者保留权利
2
赞同
反对,不会显示你的姓名
从 html 的角度考虑,确实用单引号会方便很多。但如果是单纯的 .js 文件,我倾向于使用双引号。
1. 因为 ES6 引入了 template string,template string 用的分隔符 [ ` ] 看起来和单引号[ ' ] 太像了,容易搞混。我们在项目中遇到过,有人在使用单引号字符串里误用了 template string,导致字符串未能正确替换,但是修 bug 的人也没找到这个错误,反而以为是执行环境不支持 ES6,结果就把 template string 干掉改成用 “%s” 来拼接字符串…… 如果用双引号表示字符串,这两个人根本就不会看错。
2. 此外,双引号最直接的好处是,插入单引号会很方便(废话)。我随便查阅了 SourceTree, WebStrom, Unity3D 三款软件的英文提示,发现老外都很少在提示信息里插入双引号,而是在应该用双引号的地方直接写单引号。因此为了让你的软件逼格更高,文本中间就别插入双引号了!哈哈~~~
3. 最后,如果你喜欢写单元测试的话,双引号还有一个好处是和 JSON 保持一致。例如:
expect(data).to.deep.equal({
"foo": 0,
"bar": 1,
...
});
这里的对象 "{ foo: ... }" 其实不是手打的,而是从运行时通过输出的 JSON 复制过来的,如果用单引号的话,还得再转换一次才能用……
编辑于 2016-01-04
添加评论
感谢
收藏
• 没有帮助
•
• 作者保留权利
0
赞同
反对,不会显示你的姓名
谢然
,怎么突然这冒出这么多人想学前端开发??
我记得权威指南上讲过js里这两个引号的用法是完全相同的
发布于 2013-06-07
添加评论
感谢
收藏
• 没有帮助
•
• 作者保留权利
1
赞同
反对,不会显示你的姓名
吴佐衍
,最钝的刀可以成为铁锤
知乎用户
赞同
这是编程语言习惯问题!
我个人推荐使用单引号,前端避免不了要写HTML代码,而HTML中属性需要用双引号!这种情况下使用单引号简洁不需要转义!
发布于 2013-12-09
添加评论
感谢
收藏
• 没有帮助
•
• 作者保留权利
0
赞同
反对,不会显示你的姓名
知乎用户
看来支持单引号的比较多一些,哈哈哈,以前也没这个迷惑,逐渐看得书多了,说什么的都有,反而会有一些迷惑,不知道大家有这个困惑没
发布于 2013-06-07
添加评论
感谢
收藏
• 没有帮助
•
• 作者保留权利
0
赞同
反对,不会显示你的姓名
感觉都是习惯问题,在html结构里面都是双引号吧。在js里面如果有拼接的时候喜欢单引号。
同时觉得js里面还是少用拼接,这样有兼容问题。
发布于 2015-02-27
添加评论
感谢
收藏
• 没有帮助
•
• 作者保留权利
0
赞同
反对,不会显示你的姓名
知乎用户
,ENTP | 天秤座超进化...处女座!
觉得双引号看着比较"脏"
尤其遇上那种三元不带空格还双引号的 恶心死了
强迫症一来 CTRL H " => ' 再一行行去加空格
喔 还有多维数组双引号 哇塞 蛋疼得不行........
发布于 2015-02-27
添加评论
感谢
收藏
• 没有帮助
•
• 作者保留权利
0
赞同
反对,不会显示你的姓名
$(“#id”).html('you are "ass hole". ')
发布于 2015-04-18
添加评论
感谢
收藏
• 没有帮助
•
• 作者保留权利
0
赞同
反对,不会显示你的姓名
倪二哥
,一个普通的地球人!
写什么代码就用什么约定。只这一句就够了~~~虽然大多数语言尤其是服务器端语言都是双引号,js权当另类语言罢了,约定俗称跟随老外走就对了,毕竟这东西都是人家发明的。
发布于 2015-08-04
添加评论
感谢
收藏
• 没有帮助
•
• 作者保留权利
0
赞同
反对,不会显示你的姓名
习惯用双引号,因为双引号之前经常出现"("与":",所以按着shift顺手就下去了。
发布于 2015-12-04
添加评论
感谢
收藏
• 没有帮助
•
• 作者保留权利
3
赞同
反对,不会显示你的姓名
单纯的讨论 Javascript 的情况下,
必然使用单引号啊:
强迫症患者,看着双引号还多了一笔感觉浪费,有木有?
字符串里面写 HTML 的时候,JS 用双引号还要转义,有木有?
输入双引号的时候还要多按一个 Shift 键,有木有?
再者说了,貌似输入单引号是不是代码看上去短一点儿啊?
强迫症患者伤不起,即使是使用 PHP 的时候,不到万不得已我才不用双引号咧~
编辑于 2013-06-07
2 条评论
感谢
收藏
• 没有帮助
•
• 作者保留权利
1
赞同
反对,不会显示你的姓名
匿名用户
倪二哥
赞同
写什么代码就用什么约定。感觉js用单引号的比较多一些。
个人最讨厌那种把C语言的习惯带入js,js的习惯带入C的那种人!他们都有一种熟练使用某种语言的优越感,因此写出的其他语言代码一般都是一坨屎。
编辑于 2013-12-08
2 条评论
感谢
收藏
• 没有帮助
•
• 作者保留权利
我来回答这个问题
写回答…
我要回答
- 刘看山
- 移动应用
- 加入知乎
- 知乎协议
- 商务合作
-
- 引用自知乎的回答:http://www.zhihu.com/question/21168673