错误:调用构造函数时缺少新的前缀

时间:2014-02-06 06:01:50

标签: javascript node.js angularjs

我正在尝试在node.js中创建一个函数。以下是相关代码,当我调用函数时它给出了错误。

function ReplacePlaceholders() {
            return 'success';
          }      



  exports.sendMailMsg = function (templateName, receiverEmail, dataPlaceholders) {

        ReplacePlaceholders();
}

3 个答案:

答案 0 :(得分:13)

在node.js中,函数名称是驼峰式的,应该以小写字符开头。使用大写字符启动函数会告诉JSHint将函数视为构造函数而不是方法。

这实际上是JSHint生成的错误,但代码将正确运行。导致此错误的The option in JSHintnewcap实际上已弃用,建议停用此错误。

关于为什么这个选项在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;