我正在尝试在node.js
中创建一个函数。以下是相关代码,当我调用函数时它给出了错误。
function ReplacePlaceholders() {
return 'success';
}
exports.sendMailMsg = function (templateName, receiverEmail, dataPlaceholders) {
ReplacePlaceholders();
}
答案 0 :(得分:13)
在node.js中,函数名称是驼峰式的,应该以小写字符开头。使用大写字符启动函数会告诉JSHint将函数视为构造函数而不是方法。
这实际上是JSHint生成的错误,但代码将正确运行。导致此错误的The option in JSHint,newcap
实际上已弃用,建议停用此错误。
关于为什么这个选项在JSHint中的相关信息:
此选项要求您大写构造函数的名称。旨在与
new
运算符一起使用的大写函数只是一种约定,它可以帮助程序员在构造函数与其他类型的函数之间进行视觉区分,以帮助发现使用它时的错误。不这样做不会破坏你在任何浏览器或环境中的代码,但通过阅读代码会有点难以理解 - 如果函数应该与
new
一起使用或不使用。这很重要,因为当没有使用new的函数时,this
将指向全局对象而不是新对象。
答案 1 :(得分:3)
您提到的错误消息是JSHint错误消息,而不是运行时错误。这里有一个讨论:
jshint expects the new 'prefix' for functions
JSHint期望以大写字母开头的函数是对象定义。您可以忽略该错误,在JSHint中禁用它,或重命名您的函数,使其以小写字母开头。
答案 2 :(得分:0)
我不确定为什么会这样,但是这个错误表明做new ReplacePlaceholders();
可能有效。但是,您可能需要考虑以下内容:
function ReplacePlaceholders(templateName, receiverEmail, dataPlaceholders) {
return 'success';
}
exports.sendMailMsg = ReplacePlaceholders;