ExpressJS中使用JavaScript保留字DELETE作为方法名是否安全?
关于导出
delete作为模块方法的实践分析 这样做不属于不良实践,具体原因如下:
- JavaScript的保留字在作为对象属性名使用时,在现代JS环境(包括Node.js)中完全合法。
delete虽是保留字,但你是将其作为module.exports对象的属性赋值,这种写法在ES5及后续规范中是被允许的。 - Express框架本身就是类似的实现逻辑:
app.delete()或router.delete()本质就是把delete作为实例对象的方法名,和你导出module.exports.delete的逻辑一致,并未违反语言规范。 - 实际使用时,无论是导入后通过
handler.delete调用,还是像你示例里的router.delete('/api/v1/:id', handler.delete),都能正常运行,不会出现语法错误。
如果仍有顾虑,也可以用字符串形式定义属性名,效果完全相同:
module.exports['delete'] = deleteHandler;
内容的提问来源于stack exchange,提问作者Ronnie Smith
相关产品推荐
相关产品推荐

