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

在 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(`helloJS`);
// 输出结果:
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 开源项目的源代码中,单引号比双引号更受青睐:

开源项目 使用单引号的比例
lodash 99%
react 90%
request 97%
moment 90%
express 92%
debug 97%
axios 81%

JavaScript 中双引号、单引号和反引号的区别相关推荐

  1. shell 脚本中双引号、单引号、反引号的区别,其他命令

    如果make执行的命令前面加了@字符,则不显示命令本身而只显示它的结果; Android中会定义某个变量等于@,例如 hide:= @ 通常make执行的命令如果出错(该命令的退出状态非0)就立刻终止 ...

  2. 【杂项】原来有两种单引号(单引号和反引号)

    今天看到这个语句 echo date 才知道原理我之前一直将反引号都当成了单引号(笑死) 知道后,我才知道之前在typora 中和 写博客的时候想要插入代码都要点击插入代码块(慢) 我知道打出三个单引 ...

  3. Python中字符串使用单引号、双引号标识和三引号标识,什么是三引号?什么情况下用哪种标识?

    一.三引号是指三个单引号或者三个双引号: 二.Python中字符串如果以单引号.双引号标识和三引号标识开头,则字符串结尾也必须是对应的标识,不能变更: 三.三者的异同: 1.三者都是字符串,大部分情况 ...

  4. JavaScript中双叹号(!!)和单叹号(!)

    转自:JavaScript中双叹号(!!)作用 经常看到这样的例子: var a: var b=!!a; a默认是undefined.!a是true,!!a则是false,所以b的值是false,而不 ...

  5. linux shell 双引号 单引号 使用推荐

    output linux shell 双引号 单引号 使用推荐 input alias使用双引号还是单引号? 鸟哥-鸟哥的Linux私房菜 基础学习篇 3ed|301 algo 引号主要用于处理空格分 ...

  6. MYSQL ‘单引号转义 \反斜杠转义

    1.单引号 ' 转义 今天写mysql的时候遇到一个问题,当传入的mysql语句的参数中含有单引号就会出现问题,这就需要用到转义,其实非常简单,就是使用 .Replace("'", ...

  7. 在Javascript中 声明时用var与不用var的区别,== 和 ===的区别

    今天,被问到两个JS问题,当时没回答到重点,问题虽然看起来简单,但是细节却马虎不得,在此做下记录: 1. 在Javascript中 声明时用"var"与不用"var&qu ...

  8. JavaScript中String的slice(),substr(),substring()三者区别

    JavaScript中String的slice(),substr(),substring()三者区别 共同之处 从给定的字符串中截取片段,并返回全新的这片段的字符串对象,且不会改动原字符串. 具体不同 ...

  9. JavaScript中的ReferenceError和TypeError两种错误的区别

    转自JavaScript中的ReferenceError和TypeError两种错误的区别 作为前端工作人员,在调试JavaScript程序的时候经常遇到两个错误:ReferenceError和Typ ...

最新文章

  1. 吴恩达机器学习笔记4-代价函数III(cost function)
  2. 力扣 136. 只出现一次的数字 【异或运算】
  3. mysql 逐列读取_mysql – 根据其他列如何使用逐列
  4. 工作中常用到的一些方法集合
  5. iBATIS.NET 学习笔记(八)
  6. Mybatis的mapper标签 namespace属性说明
  7. Oracle技术之索引与Null值对于Hints及执行计划的影响
  8. 深度学习算法 第四期
  9. 【每日算法Day 77】LeetCode 第 181 场周赛题解
  10. Java 就业培训教程 第二章读书笔记啊
  11. cad.net 更改高版本填充交互方式为低版本样子
  12. EXCEL常规格式数字转换为日期时间格式的方法
  13. 联想拯救者笔记本电脑Fn键失效,Fn功能相反,开关FnLock
  14. 《Python 之 源代码 DDOS攻击》
  15. H3C 交换机软件版本升级
  16. 保健养生不容错过这一菜王--笋
  17. 博途组态阀岛_西门子PLC-S7-1200 PROFINET与 IO device 通信
  18. 22处令人叹为观止的景观
  19. 亚信安全与新华三联手打造“更安全”的云数据中心
  20. Java_JUC_CountDownLatch/CyclicBarrier循环屏障/Semaphore信号灯/枚举

热门文章

  1. 热水器脉冲电路图(五款热水器脉冲电路设计原理图详解)
  2. 微信小程序支付验证签名失败
  3. 【博弈论】最后拿球者输
  4. [AcWing] 1012. 友好城市(C++实现)最长上升子序列模型、较为特殊
  5. 什么是安全架构《三》
  6. mongodb6创建账号
  7. 为mongoDB数据库添加账号步骤
  8. Linux——什么是文件描述符
  9. 一文搞懂什么是MTU
  10. 盒子模型之爱奇艺播放列表