9

我在 Node.js 之上使用 Express.js 来创建 RESTful API,并使用 grunt 来监视我的文件并自动检查我的 JavaScript。

每次我使用删除功能时,它都会被 JSHint 标记:

[L218:C9] Expected an identifier and instead saw 'delete' (a reserved word).
app.delete('/api/users/:userid', function deleteUser(req, res, next) {

我知道“删除”是保留字,但它是由 Express.js 选择的!有没有更好的方法来检查我的 Express.js 应用程序?有什么办法可以关闭这个检查??

4

3 回答 3

28

在 Express.js 中,使用del而不是delete.

app.del('/api/users/:userid', function deleteUser(req, res, next)
于 2012-07-10T19:28:10.667 回答
7

解决此问题的另一种方法是使用括号表示法而不是点表示法

app['delete']('/api/users/:userid', function deleteUser(req, res, next) {
  /* function body */
});

过去,在使用定义了和方法的IndexedDB时,这种解决方法是必要的。.delete.continue

这些天来,这种解决方法应该是不必要的。自从 ES5 JavaScript 允许属性名使用保留字。很长一段时间,jsHint 默认假设你的代码是 ES3,但从2.0.0 版本开始它默认假设它是 ES5,并且不会抱怨保留字被用作属性名称。

于 2013-06-03T04:52:26.847 回答
3

在 JSHint 1.1.x 中,您可以es5为 jshint 设置选项,它允许您根据 ES5 规范使用保留字作为属性。

从 JSHint 2.0 开始,es5选项是默认选项,您应该被允许使用保留字作为属性。

有关更多信息,您可以访问 http://www.jshint.com/docs/#options

于 2013-03-04T06:53:36.960 回答