JavaScript 中双引号、单引号和反引号的区别

关注微信公众号:前端充电宝,获取最新原创文章:

在 JavaScript 中,单引号(’’)和双引号("") 经常用于创建字符串。通常情况下,使用双引号或单引号没有区别,它们最后都代表一个字符串。当我们需要使用反斜杠字符()来转义字符时,他们之间的唯一区别就体现出来了。

如果使用单引号来创建字符串,那么就不能在该字符串中使用单引号,只能使用反斜杠 ()对其进行转义。比如:

const hi = 'hello' world';
console.log(hi)

只能使用反斜杠来转义:

const hi = 'hello\' world';
console.log(hi)  // 输出结果:hello' world

如果想在双引号中使用双引号,也需要使用反斜杠来转义:

const hi = "hello\" world";
console.log(hi)  // 输出结果:hello" world

而如果想在双引号中使用单引号,可以直接使用:

const hi = "hello' world";
console.log(hi)  // 输出结果:hello' world

另外,JSON 文件中是不支持单引号,如果想要在 JSON 和 JavaScript 文件之间复制和粘贴时,就需要额外注意了。

虽然单引号和双引号是使用较多的,但我们还有第三个方案,就是ES6中的模板字符串(反引号)。

(1)字符串连接

const name = 'javascript';
console.log(`hello ${name}`);  // 输出结果:hello javascript

(2)无需转义单引号或双引号

console.log(`hello "JS"`);   // 输出结果:hello "JS"
console.log(`hello 'CSS'`);  // 输出结果:hello 'CSS'

(3)不使用换行符写多行内容

console.log(`hello

JS`);
// 输出结果:
hello 

JS

那当我们使用单引号、双引号或反引号时,性能会有什么不同吗?下面来通过三个方法简单来看一下三种形式的性能差别:

function testingDoubleQuotes(){
  console.time('单引号');
  for (let i = 0; i < 100000; i++) {
   const string1 = "String One";
  }
  console.timeEnd('单引号');
}

function testingSingleQuotes(){
  console.time('双引号');
  for (let i = 0; i < 100000; i++) {
   const string2 = 'String Two';
  }
  console.timeEnd('双引号');
}

function testingbackticks(){
  console.time('反引号');
  for (let i = 0; i < 100000; i++) {
   const string1 = `String Three`;
  }
  console.timeEnd('反引号');
}

testingDoubleQuotes();
testingSingleQuotes();
testingbackticks();

结果如下:

根据以上结果,可以看到,反引号是最快的,双引号是最慢的。当然这个结果并不是每次都一样,仅供参考。不过,这样细微的差异对项目是不会产生任何影响的。

综上,使用单引号、双引号或反引号之间没有太大的区别。可以根据自己的喜好选择一种或多种样式。不过,最好在项目中使用单一的格式以保持整洁和一致。

除此之外,我们可以使用代码格式化程序或者根据样式指南来做处理。它们都有默认的类型:

  • Prettier 默认使用双引号;
  • Eslint 默认使用双引号;
  • Airbnb 风格指南更推荐使用单引号。

在比较流行的 JavaScript 开源项目的源代码中,单引号比双引号更受青睐:

开源项目使用单引号的比例
lodash99%
react90%
request97%
moment90%
express92%
debug97%
axios81%
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CUG-GZ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值