在 ECMAScript 2020 中,我们迎来了两个新的字符:零宽度空格符号和零宽度非断点。这两个字符在前端开发中并不是很常用,但在一些特殊场景下,它们可以起到让代码更简洁明了的作用。
零宽度空格符号
零宽度空格符号(U+200B
)是一种不可见字符,它的主要作用是在文本中插入一个零宽度的空格,让文本内容的分隔更加明显。这个符号在语言翻译、排版等领域非常有用。
比如,我们可以在下面的句子中插入一个零宽度空格符号:
这是一个句子, 有一个零宽度空格符号在这里。
在浏览器中展示时,这个空格符号是不可见的,但它确实存在,可以让句子的结构更加清晰。
在实际使用中,我们可以通过字符串的 replaceAll()
方法来插入零宽度空格符号:
const sentence = '这是一个句子,有一个零宽度空格符号在这里。'; const newSentence = sentence.replaceAll(' ', ' '); console.log(newSentence); // 这是一个句子, 有一个零宽度空格符号在这里。
注意,这里有一个不可见的字符,所以不要直接复制代码粘贴到编辑器中使用。
零宽度非断点
零宽度非断点(U+FEFF
)是另一个不可见字符,它的主要作用是在文本中插入一个零宽度的非断点符号,这个符号可以帮助我们避免单词之间的换行问题。
在一些特殊情况下,如果我们需要禁止单词之间的换行,我们可以在单词之间插入零宽度非断点符号,这样即使单词太长,也不会在单词中间换行,而是整体换行。
比如,我们可以在下面的句子中插入一个零宽度非断点符号:
这是一个句子,插入了零宽度非断点符号可以避免单词之间换行的问题。
在展示时,这个符号同样是不可见的。
在实际使用中,我们可以通过字符串的 replaceAll()
方法来插入零宽度非断点符号:
const sentence = '这是一个句子,可以避免单词之间换行的问题。'; const newSentence = sentence.replaceAll(' ', '\uFEFF '); console.log(newSentence); // 这是一个句子,可以避免单词之间换行的问题。
需要注意的是,为了避免误解,我们在代码中使用了 HTML 实体编码 
表示零宽度非断点符号。
总结
零宽度空格符号和零宽度非断点在前端开发中并不是经常使用,但在一些特殊场景下,它们可以为我们提供很大的方便。在实际使用中,我们可以通过字符串的 replaceAll()
方法来插入这两个字符。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/65474c827d4982a6eb1a971d