# no-irregular-whitespace

禁止不规则空格

配置文件中的 "extends": "eslint:recommended" 属性启用了该规则

无效或不规则的空格会导致 ECMAScript 5 解析器出现问题,并且还会使代码更难调试,类似于混合制表符和空格。

程序员可能会错误地输入各种空白字符,例如通过复制或键盘快捷键。例如,在 macOS 上按 Alt + Space 会添加一个不间断的空格字符。

解决此问题的一个简单方法是从头开始重写有问题的行。这也可能是文本编辑器引入的问题:如果重写行不能解决问题,请尝试使用不同的编辑器。

这些空间导致的已知问题:

  • 零宽度空间不被视为标记的分隔符,通常被解析为 Unexpected token ILLEGAL 未显示在现代浏览器中,使代码存储库软件有望解决可视化问题

  • 行分隔符不是 JSON 中的有效字符,这会导致解析错误

# 规则详情

此规则旨在捕获不是正常制表符和空格的无效空格。其中一些字符可能会导致现代浏览器出现问题,而其他字符将是需要发现的调试问题。

此规则不允许以下字符,除非选项允许:

\u000B - Line Tabulation (\v) - <VT>
\u000C - Form Feed (\f) - <FF>
\u00A0 - No-Break Space - <NBSP>
\u0085 - Next Line
\u1680 - Ogham Space Mark
\u180E - Mongolian Vowel Separator - <MVS>
\ufeff - Zero Width No-Break Space - <BOM>
\u2000 - En Quad
\u2001 - Em Quad
\u2002 - En Space - <ENSP>
\u2003 - Em Space - <EMSP>
\u2004 - Three-Per-Em
\u2005 - Four-Per-Em
\u2006 - Six-Per-Em
\u2007 - Figure Space
\u2008 - Punctuation Space - <PUNCSP>
\u2009 - Thin Space
\u200A - Hair Space
\u200B - Zero Width Space - <ZWSP>
\u2028 - Line Separator
\u2029 - Paragraph Separator
\u202F - Narrow No-Break Space
\u205f - Medium Mathematical Space
\u3000 - Ideographic Space

# 选项

此规则有一个异常对象选项:

  • "skipStrings": true(默认)允许字符串字面中的任何空白字符
  • "skipComments": true 允许注释中的任何空白字符
  • "skipRegExps": true 允许正则表达式字面中的任何空白字符
  • "skipTemplates": true 允许模板字面中的任何空白字符

# skipStrings

此规则使用默认 { "skipStrings": true } 选项的错误代码示例:

/*eslint no-irregular-whitespace: "error"*/

function thing() /*<NBSP>*/{
    return 'test';
}

function thing( /*<NBSP>*/){
    return 'test';
}

function thing /*<NBSP>*/(){
    return 'test';
}

function thing᠎/*<MVS>*/(){
    return 'test';
}

function thing() {
    return 'test';/*<ENSP>*/
}

function thing() {
    return 'test'; /*<NBSP>*/
}

function thing() {
    // Description <NBSP>: some descriptive text
}

/*
Description <NBSP>: some descriptive text
*/

function thing() {
    return / <NBSP>regexp/;
}

/*eslint-env es6*/
function thing() {
    return `template <NBSP>string`;
}

此规则使用默认 { "skipStrings": true } 选项的正确代码示例:

/*eslint no-irregular-whitespace: "error"*/

function thing() {
    return ' <NBSP>thing';
}

function thing() {
    return '​<ZWSP>thing';
}

function thing() {
    return 'th <NBSP>ing';
}

# skipComments

此规则使用 { "skipComments": true } 选项的其他正确代码示例:

/*eslint no-irregular-whitespace: ["error", { "skipComments": true }]*/

function thing() {
    // Description <NBSP>: some descriptive text
}

/*
Description <NBSP>: some descriptive text
*/

# skipRegExps

此规则使用 { "skipRegExps": true } 选项的其他正确代码示例:

/*eslint no-irregular-whitespace: ["error", { "skipRegExps": true }]*/

function thing() {
    return / <NBSP>regexp/;
}

# skipTemplates

此规则使用 { "skipTemplates": true } 选项的其他正确代码示例:

/*eslint no-irregular-whitespace: ["error", { "skipTemplates": true }]*/
/*eslint-env es6*/

function thing() {
    return `template <NBSP>string`;
}

# 何时不使用

如果您决定在应用程序中使用除制表符和空格以外的空格以外的空格。

Last Updated: 5/13/2023, 8:55:38 PM