JavaScript 中字符串变量使用单引号和双引号的利弊?
最近在做一些规范的工作,这个点没想明白,到底单引号和双引号有啥利弊,为什么有的规范推荐双引号,我个人习惯了使用单引号。
纯json我知道为啥要使用双引号,因为很多语言只能解析双引号的格式,为了接口通用性,必须使用双引号来包围key和value,但是一般的funciton里声明的字符串变量呢?
纯json我知道为啥要使用双引号,因为很多语言只能解析双引号的格式,为了接口通用性,必须使用双引号来包围key和value,但是一般的funciton里声明的字符串变量呢?
1 条评论
按投票排序
按时间排序
17 个回答
javascript,php 的来说一下我的习惯。
一个主要的原因嘛,这个也是习惯问题(当然,选择了一种以后就要全部统一哦)。
首先HTML 是这样的:
前端嘛,不管是 js 还是 php,都免不了 HTML。一般 HTML 习惯是属性都用双引号。那么当遇到 js 和 php 里要用 HTML string 的时候,就是这样:
然后也有少按 shift 的原因在里面,毕竟 js 里没区别,在 php 里要用变量也都是 「'str'.$var.'ing'」搞定。
P.S. 前端里面(可能我看英文圈子比较多,国内不详),用 ' 应该是随大流的习惯,也就是说,遇到代码风格一致的可能性会高一些,这样写代码也省一点事儿。
P.S. 2 让我想到类似的一个代码风格的问题,
一阵血雨腥风啊,不同语言习惯的人真的不能在一起(写代码)。
一个主要的原因嘛,这个也是习惯问题(当然,选择了一种以后就要全部统一哦)。
首先HTML 是这样的:
<div class="zu-global-notify" id="zh-global-message">
// js
var str = '<div class="zu-global-notify" id="zh-global-message">';
// php
$str = '<div class="zu-global-notify" id="zh-global-message">';
$str2 = '<div class="'.$someClass.'" id="zh-global-message">';
然后也有少按 shift 的原因在里面,毕竟 js 里没区别,在 php 里要用变量也都是 「'str'.$var.'ing'」搞定。
P.S. 前端里面(可能我看英文圈子比较多,国内不详),用 ' 应该是随大流的习惯,也就是说,遇到代码风格一致的可能性会高一些,这样写代码也省一点事儿。
P.S. 2 让我想到类似的一个代码风格的问题,
if ( condition ) {
// do something
}
if ( condition )
{
// do something
}
知乎用户
赞同
在js中拼接字符串 我会使用 单引号
其余(包括coffeescript)我会使用双引号
原因: 单音号在拼接字符串的时候,尤其是拼接html字符串 单音号的好处最为突出 因为我们通常都喜欢用双引号来作为html里的标识 eg: id="_id"
ps: 顺便说一句 在coffeescript 中 拼接变量 必须得使用 双引号
其余(包括coffeescript)我会使用双引号
原因: 单音号在拼接字符串的时候,尤其是拼接html字符串 单音号的好处最为突出 因为我们通常都喜欢用双引号来作为html里的标识 eg: id="_id"
ps: 顺便说一句 在coffeescript 中 拼接变量 必须得使用 双引号
从 html 的角度考虑,确实用单引号会方便很多。但如果是单纯的 .js 文件,我倾向于使用双引号。
1. 因为 ES6 引入了 template string,template string 用的分隔符 [ ` ] 看起来和单引号[ ' ] 太像了,容易搞混。我们在项目中遇到过,有人在使用单引号字符串里误用了 template string,导致字符串未能正确替换,但是修 bug 的人也没找到这个错误,反而以为是执行环境不支持 ES6,结果就把 template string 干掉改成用 “%s” 来拼接字符串…… 如果用双引号表示字符串,这两个人根本就不会看错。
2. 此外,双引号最直接的好处是,插入单引号会很方便(废话)。我随便查阅了 SourceTree, WebStrom, Unity3D 三款软件的英文提示,发现老外都很少在提示信息里插入双引号,而是在应该用双引号的地方直接写单引号。因此为了让你的软件逼格更高,文本中间就别插入双引号了!哈哈~~~
3. 最后,如果你喜欢写单元测试的话,双引号还有一个好处是和 JSON 保持一致。例如:
这里的对象 "{ foo: ... }" 其实不是手打的,而是从运行时通过输出的 JSON 复制过来的,如果用单引号的话,还得再转换一次才能用……
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,
...
});
加入知乎
与世界分享你的知识、经验和见解
64 人关注该问题
换一换
相关问题
- Web 前后端分离的意义大吗? 28 个回答
- 前端工程师,你们都在研究哪些技术? 14 个回答
- 你为什么选择 JavaScript ? 24 个回答
- 做前端开发必需要掌握切图技能吗? 45 个回答
- 为什么前端工程师很难找? 141 个回答