在我的JS代码中发现了 `\u200b` 字符,它是从哪里来的?

如果你在前端开发中遇到过类似下面这样的错误信息:

-------- ------------ ------- -- ---------- -----

并且发现错误指向了一个奇怪的字符 \u200b,那么恭喜你,你可能遇到了零宽空格字符(Zero-width space characters)。

什么是零宽空格字符?

零宽空格字符是一种不占据可见空间的 Unicode 字符,通常用于调整文本排版。当浏览器渲染包含零宽空格字符的文本时,它们会被忽略并且不显示在页面上。

但是,如果在代码中使用了零宽空格字符,那么它将被解释为有效字符,并且可能会导致语法错误。

零宽空格字符如何出现在我的代码中?

虽然很难确定零宽空格字符是如何出现在你的代码中的,但下面是一些可能的原因:

  1. 复制/粘贴:如果你从其他地方复制/粘贴了代码,那么其中可能包含零宽空格字符。
  2. 键盘快捷键:某些键盘快捷键会插入零宽空格字符,例如Windows上的Ctrl + Shift + 2。
  3. 编辑器自动纠错:有些编辑器会在自动纠错时插入零宽空格字符,例如VS Code的“自动修复”功能。

如何解决这个问题?

一旦你发现代码中包含了零宽空格字符,你可以采取以下措施:

  1. 搜索/替换:通过在编辑器中搜索零宽空格字符并将其替换为正常字符,来手动清除它们。
  2. 使用工具:使用代码检查工具或浏览器扩展程序,如Zero-Width Spaces Highlighter,来帮助捕获和清除零宽空格字符。
  3. 避免复制/粘贴:尽可能避免从其他地方复制/粘贴代码,并且尝试手动输入代码。

示例代码

下面是一个示例代码片段,其中包含一个零宽空格字符,导致JavaScript解析错误:

----- ------- - -------- --------
---------------------

在这个例子中,字符串 "Hello, world!" 中的两个单词之间有一个零宽空格字符。如果运行此代码,将得到以下错误:

-------- ------------ ------- -- ---------- -----

要修复这个错误,只需删除该字符,代码就会正常工作:

----- ------- - ------- --------
---------------------

结论

零宽空格字符是一个很容易被忽略的问题,但如果不及时发现和修复,它可能会导致代码出现难以诊断的错误。因此,在编写代码时,我们应该注意避免这些字符的出现,并且尝试使用一些工具来帮助捕获和清除它们。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/26333