本文介绍在JavaScript中拼接字符串时如何正确插入空格。针对普通空格被编译器或HTML解析忽略的问题,推荐使用不可见字符\xa0(非断行空格)实现稳定分隔。文章同时列举了+、反引号、concat和join四种常用拼接方法,并详细解析了HTML中nbsp、ensp、emsp等多种空格实体的宽度差异与适用场景,帮助开发者解决时间、日期等数据拼接时的格式显示问题。
在JavaScript中拼接字符串时,有时需要在中间插入空格。
基于实际需求,这里整理出相应的解决方案。
具体需求是在拼接字符串的过程中,除了添加分号分隔符外,还需要插入一个或两个空格。

遇到的问题
尝试了多种拼接方式均未生效。
第一种尝试使用   实体,结果失败,直接输出了实体代码(即使手动添加普通空格也被忽略)。
quality += result[i].foodName + ':' + result[i]].weight + ';' + ' '

第二种解决方法成功。
采用 \xa0 字符进行处理。
quality += result[i].foodName + ':' + result[i]].weight + ';' + '\xa0\xa0\xa0'
最终实现了三个小空格的显示效果。

JavaScript字符串拼接时空格无法显示的问题
这是一个简单的字符串拼接案例,却让人困扰。需求是将 date:2019-11-28 和 time:17:50 拼接为 2019-11-28 17:50,即中间加一个空格。然而,编译器自动格式化代码的插件在保存(Ctrl+S)时自动删除了普通空格,导致参数变为 2019-11-2817:50,进而引发时间格式错误的提示。
下面介绍几种字符串拼接的方法,以及HTML提供的几种空格实体。
解决方案:使用 \xa0(反斜杠xa零)
let date:'2019-11-28',
time:'17:50'
console.log(date+'\xa0'+time) //2019-11-28 17:50字符串拼接的几种常用方法
1. 最常用的加号运算符
let date:'2019-11-28',
time:'17:50'
console.log(date+' '+time) //2019-11-28 17:502. ES6的反引号模板字符串
let date:'2019-11-28',
time:'17:50'
console.log(`${date} ${time}`) //2019-11-28 17:503. 兼容性较好的 ES5 concat 方法
let date:'2019-11-28',
time:'17:50'
console.log(date.concat(' ', time)) //2019-11-28 17:504. 数组的 join 方法
let date:'2019-11-28',
time:'17:50'
console.log([date, time].join(' ')) //2019-11-28 17:50HTML提供的几种空格实体
HTML提供的几种空格实体(space entity)拥有不同的宽度。非断行空格( )是常规空格的宽度,可运行于所有主流浏览器。其他几种空格(      ‌‍)在不同浏览器中的宽度各异。
它叫不换行空格,全称No-Break Space,是最常见且使用最多的空格,大多数人可能只接触过 ,它是按下space键产生的空格。在HTML中,如果直接用空格键产生此空格,空格是不会累加的(只算1个)。要使用html实体表示才可累加,该空格占据宽度受字体影响明显而强烈。
 
它叫“半角空格”,全称是En Space,en是字体排印学的计量单位,为em宽度的一半。根据定义,它等同于字体度的一半(如16px字体中就是8px)。名义上是小写字母n的宽度。此空格传承空格家族一贯的特性:透明的,此空格有个相当稳健的特性,就是其占据的宽度正好是1/2个中文宽度,而且基本上不受字体影响。
 
它叫“全角空格”,全称是Em Space,em是字体排印学的计量单位,相当于当前指定的点数。例如,1 em在16px的字体中就是16px。此空格也传承空格家族一贯的特性:透明的,此空格也有个相当稳健的特性,就是其占据的宽度正好是1个中文宽度,而且基本上不受字体影响。
 
它叫窄空格,全称是Thin Space。我们不妨称之为“瘦弱空格”,就是该空格长得比较瘦弱,身体单薄,占据的宽度比较小。它是em之六分之一宽。
‌
它叫零宽不连字,全称是Zero Width Non Joiner,简称“ZWNJ”,是一个不打印字符,放在电子文本的两个字符之间,抑制本来会发生的连字,而是以这两个字符原本的字形来绘制。Unicode中的零宽不连字字符映射为“”(zero width non-joiner,U+200C),HTML字符值引用为: ‌
‍
它叫零宽连字,全称是Zero Width Joiner,简称“ZWJ”,是一个不打印字符,放在某些需要复杂排版语言(如阿拉伯语、印地语)的两个字符之间,使得这两个本不会发生连字的字符产生了连字效果。零宽连字符的Unicode码位是U+200D (HTML: ‍ ‍)。
此外,浏览器还会把以下字符当作空白进行解析:空格( )、制表位(	)、换行(
)和回车(
)还有( )等等。
效果如下:

以上为个人经验,希望能给大家一个参考,也希望大家多多支持本站。