记一个我领导必问的面试题,单引号和双引号哪一个速度快?

2,384 阅读3分钟

前言

前几天发了篇文章记一次面试题,正则表达式(?=a)是什么意思?,被上一家公司关系比较好的同事看到了,给了一个赞赏的评价。心里美滋滋的,莫名的,想到了上一家公司的前端领导面试的时候必定会问的一个问题:

单引号和双引号哪一个速度更快

额,莫名感觉到是单引号比较快,什么原因呢,不太清楚。泪奔中···

话说,当年我怎么回答的来着,忘记了···

so,看来是有必要研究一番了。

研究成果

在有些语言中,比如在php中,单引号的速度是要比双引号的要快的,原因是:

在php中,单引号不会被解析,双引号会被解析并检测字符串中是否有变量

不过,这个问题,如果仅仅从js的角度看,处于V8引擎中,速度都是差不多的。

在windows下用chrome 74.0.3729.108 版本测试对比下,

const startTime = +new Date();
let price = '';
for(let i = 0; i<10000000; i++) {
	price += '1';
}
const endTime = +new Date();
console.log((endTime - startTime) + 'ms');
// 输出:1567ms

const startTime = +new Date();
let price = "";
for(let i = 0; i<10000000; i++) {
	price += "1";
}
const endTime = +new Date();
console.log((endTime - startTime) + 'ms');
// 输出:1526ms

几十毫秒的差距,而且还受到各种外力的影响,比如电脑啊,浏览器啊,等等等等····

几乎可以忽略不记。

但是,如果从你代码输入的层面上来看,是单引号比双引号速度快的,原因是:

输入双引号的时候要比单引号多按一个 Shift 😀,如果一年 1W 行代码要用到引号,那么使用单引号就少按了 1W 次 Shift 。假设按一次 Shift 需要 100ms ,那么一年节省了 1000s 的时间,

在js中你使用单引号和双引号哪一个都ok,主要还是看你的喜好或者是你们前端团队的规范了,如果你们团队没有规范,那么你完全可以一天使用单引号,一天使用双引号😀

只要你能保证接手你项目的人没有强迫症或者是代码洁癖,又或者是你能天天锻炼身体,在他要打你的时候能够快速跑掉,那么你完全能够在写代码的时候,几行代码就换一下单引号和双引号。

上面建议是开玩笑的胡扯,有人按此操作,本人不承担任何责任。

对于单双引号使用的一些建议

1、在HTML中尽量使用双引号,某些时候可能需要后端处理HTML,后端语言基本都用双引号
2、在js中尽量使用单引号,如果你需要拼接字符串,并且你会使用ES6 ,那么请使用模板字符串
3、在JSON 中使用双引号,这是规范,很多语言只能解析双引号的JSON格式

如果你在项目中使用ESLint,并且在VSCode中写代码,那么你可以不用担心单双引号如何使用的问题了。

ESLint的风格设置为Prettier,VSCode 安装ESLint和 Prettier 插件,简单配置一下(如何配置自行百度)就能自动格式化你的代码,从此告别单双引号的困扰。

结论

如果有人问你这个问题的话, 如果你对此非常清楚,请用你的的语言说他,如果你记不清楚或者是不知道的情况下,请回答,单引号比较快。

在你不太清楚的时候面试对话例子

面试官:单引号和双引号哪一个更快?

你:单引号。

面试官:为什么?

你:直觉。

面试官:······