非断空格在JavaScript源代码中是否总被视为空白字符?

5
在审查一些Javascript文件时,我的代码审查工具在其中一个文件中显示了“�”(缺失字符符号)。进一步调查后,发现开发人员在其代码中使用了非断空格。(可能是从网页复制/粘贴的结果。)
令我惊讶的是,这在Chrome、IE11和Edge中都可以正常工作。但我担心它在所有浏览器中都无法正常工作。这是Javascript语言的必需特性,我可以依赖它吗?还是我需要告诉开发人员进行修复,以避免其他浏览器可能存在的问题?
以下是一个示例:

//NOTE: All spaces in below code are non-breaking space (0xA0), not space (0x20)
function test() {
  var mystr = 'hello';
  alert(mystr);
}

test();


我认为你应该要求开发人员只使用空格,否则会让团队中的其他人在代码中搜索变得更加困难,而且在他们的编辑器中可能会出现(缺失字符符号)。 - Roberto
1个回答

7

是的,根据 ECMAScript® 2015 语言规范,不间断空格被视为空白字符:

空格字符代码点

Code Point:   Name:                                   Abbreviation:
------------------------------------------------------------------
U+0009        CHARACTER TABULATION                    <TAB>
U+000B        LINE TABULATION                         <VT>
U+000C        FORM FEED (FF)                          <FF>
U+0020        SPACE                                   <SP>
U+00A0        NO-BREAK SPACE                          <NBSP>
U+FEFF        ZERO WIDTH NO-BREAK SPACE               <ZWNBSP>
Other (Zs)    Any other unicode "Separator, space"    <USP>
"

Zs是Unicode 5.1. ECMAScript中"分隔符,空格"(Zs)类别中列出的代码点。

包含各种空格的示例代码:

"

// var keyword followed by different kinds of whitespace:
var tab = " ";
varvt = "";
varff = "";
var sp = " ";
var nbsp = " ";
varzwnbsp = "";
var usp = " ";

console.log("whitespace:", tab, vt, ff, sp, nbsp, zwnbsp, usp);

这是我需要告诉开发者修复以避免其他浏览器潜在问题的事情吗?

我建议仅使用空格(有些允许制表符),因为它可以避免不同文本编辑器对空白字符的混淆,以及可读性问题,正如上面代码示例所演示的那样。


1
唉,stackoverflow的编辑器也会破坏空格。因此上面的代码片段无法执行。我会在meta上报告这个问题... - le_m

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接