Fork me on GitHub

JSLint Error Explanations

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


Unexpected sync method: '{a}'

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

JSLint在遇到一段尝试访问一个名称以"Sync"结尾的属性时会抛出"Unexpected sync method: '{a}'"的错误。在下面这个例子中,我们尝试着从一个文件夹中获取一个文件中的一个数组(Node.js为例):

注意尽管错误消息讲的是"method",JSLint实际上抛出这个错误是因为会访问到边界区,而不管是否是一个调用方法(并不检测标示符之后的一对括号)。

为什么会产生这个错误?

这个错误是为了强调约定的缺少以及可能的错误实践。若是不修改这些代码,你的代码在运行时并不会报错,但是事实上有更好的方式去实现之。

特别是在Node.js中,有很多异步的方法提供了同步一样的功能。例如:有一个readdir方法,它是上文代码中readdirSync方法的异步版本。

在绝大多数的情况下,最好还是选择使用异步方法而不是同步的。理由很简单,同步的方法会阻塞运行直到它们完成了方法需要做的事情。在浏览器中,这会显而易见的导致"fronzen"页面。为了解决这个问题,可以简单的修改你的代码,使用异步方法:

当然,如果你真的需要使用同步方法,你可以通过将stupid选项设置为true来忽略这个错误。同时可以感受一下JSLint的作者Douglas Crockford对此的感受:


comments powered by Disqus