为什么 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 会引起对它们的注意。
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 会引起对它们的注意。