使用JSHint和Express.js /'delete'(保留字)

我正在使用Node.js的Express.js ontop来创buildRESTful API,并使用grunt来监视我的文件并自动将我的JavaScript删除。

每次使用删除function,它都会被JSHint标记:

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

我明白'删除'是一个保留字,但它是由Express.jsselect的! 有没有更好的方式去linding我的Express.js应用程序? 任何方式来closures这个检查?

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

 app.del('/api/users/:userid', function deleteUser(req, res, next) 

解决这个问题的另一种方法是使用方括号而不是点符号 。

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

过去,当使用定义了.delete.continue方法的IndexedDB时 ,这种工作是必需的。

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

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

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

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