Fork me on GitHub

JSLint Error Explanations

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


'with' is not allowed in strict mode

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

当JSHint遇到一个一个在strict模式下运行的包含with语句的代码时,就会抛出"'with' is not allowed in strict mode"的错误。在下面这个例子中,我们尝试着在一个声明了strict模式的函数体内使用with语句:

为什么会产生这个错误?

提示这个错误是为了强调一个JavaScript语法错误。如果不解决这个问题,你的代码就会出错。在ECMAScript 5规范清晰地描述了在strict模式下with语句的存在是非法的。 (ES5 §12.10.1):

Strict模式的代码不包含with语句with语句在这样的上下文中出现就会被当做一个语法错误。

你可以通过重写那段使用with语句的代码来完全满足"namespace"。以下代码可以表现的和上面的第一个例子一样:

如果你需要依赖with语句的特性来满足一个有效的用例,而你唯一的选择就是确保你的代码不会在strict模式下运行。但是这样做就会在JSHint产生不同的提示消息,不过这可以在JSHint(版本1.0.0及以上)中通过适当的警告标示对其进行忽略:

在JSHint 1.0.0及以上版本中你可以通过一种特殊的语法来忽略所有的警告. 由于这个提示消息跟一个严重的语法错误有关,你无法让这个消息不显示。


comments powered by Disqus