Fork me on GitHub

JSLint Error Explanations

JSLint will hurt your feelings. It's time to make them better!


A regular expression literal can be confused with '/='

什么时候会产生这个错误?

JSLint和JSHint(版本1.0.0之前)在遇到正则表达式字面量由=符号起始时,会抛出"A regular expression literal can be confused with '/='"的错误。在下面例子中我们尝试着将正则表达式字面量"=1"赋给变量=去匹配字符串:

为什么会产生这个错误?

这个错误是为了强调潜在的让人感到疑惑的代码。若不修复这个错误,你的代码会正常运行,但是会让其他人感到困惑,特别是那些随便扫了一眼你的脚本的人们。

/字符在JavaScript中是有歧义的。它既能表示正则表达式开始,正如上面一个例子中展示的那样,也能被解释为除号。就像大多数算术符号一样,除号可以和赋值符号一起作为组合符号:

这个二义性并不是一个真正的问题,因为解释器总是能区分两种不同的用法。但是,你可以看到上面的正则表达式可能造成一开始的疑惑。

为了解决这个问题,你可以简单的将=符号在正则表达式中转义。这会表现的很正常,因为=符号已经不是第一个字符,所以错误不会再出现:

另外,你可以使用RegExp构造函数,这就不需要/了:


comments powered by Disqus