当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及以上版本中你可以通过一种特殊的语法来忽略所有的警告. 由于这个提示消息跟一个严重的语法错误有关,你无法让这个消息不显示。