不间断的空间总是被视为Javascript源中的空格吗?

Kip*_*Kip 4 javascript

在对某些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();
Run Code Online (Sandbox Code Playgroud)

le_*_*e_m 6

是的,根据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>
Run Code Online (Sandbox Code Playgroud)

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

以各种空格为特色的示例代码:

// 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);
Run Code Online (Sandbox Code Playgroud)

...这是我需要告诉开发人员修复以避免其他浏览器上的潜在问题吗?

我建议仅使用空格(一些允许选项卡),因为它可以防止不同文本编辑器和可读性问题导致的各种空白错误,如上面的代码示例所示.