为什么 linters 选择无用的转义字符?

Why do linters pick on useless escape character?

Escaping non-special characters in strings, template literals, and regular expressions doesn't have any effect

来源:https://eslint.org/docs/rules/no-useless-escape

但显然这是错误的:

这里"fix"没什么可说的;我们都知道这是一个完全有效的字符序列。

开个玩笑,这背后的原理是什么?

如果连 ESLint 都承认没有害处,那又何必呢?如果你只看最终结果(我知道 \ 字符不会被打印出来)但在 "code is data" 上下文中,它可能没有用,这在进行语法分析时可能是有用的数据。

ESLint 判断字符串中的内容,但它不会对这段代码做出让步:(这对我来说也没什么用)

var x = 10;
var y = x + 0;
var z = y * 1;

一些 linting 规则旨在使您的代码完美

如果你愿意,你可以转义字符,但有时它没有任何作用。如果你仍然这样做,你只是在你的代码中放置了一个无意义的字符,混淆了其他程序员并浪费了 1 个字节。您的代码使用 \_ 序列转义下划线字符,而 \ 在该序列中不执行任何操作。

这条 lint 规则告诉你这件事。这不是世界末日,但使用 lint 规则,您想知道。

如果转义字符没有做任何有用的事情,它在那里做什么?

也许代码的作者想要一个字面上的反斜杠字符。该错误引起了人们的注意,因此他们可以将 \ 替换为 \.

也许他们认为下一个字符需要转义。这会以其他方式教育他们。

也许这只是一个错字。

既然没有 的理由在那里有 \,那么只能有 坏的 理由。有些比其他的更严重,但 linter 会引起对它们的注意。