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

Anu*_*nup 9 javascript node.js angularjs

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

function ReplacePlaceholders() {
            return 'success';
          }      



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

        ReplacePlaceholders();
}
Run Code Online (Sandbox Code Playgroud)

Cla*_*ies 13

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

这实际上是JSHint生成的错误,但代码将正确运行. 在JSHint选项,newcap,这将导致该错误实际上是贬值的,如果停用建议.

关于为什么这个选项在JSHint中的相关信息:

此选项要求您大写构造函数的名称.旨在与new运算符一起使用的大写函数只是一种约定,它可以帮助程序员在视觉上区分构造函数和其他类型的函数,以帮助发现使用它时的错误.

不这样做不会破坏你在任何浏览器或环境中的代码,但是通过读取代码会有点难以理解 - 如果该函数应该使用或不使用new.这很重要,因为在没有它的情况下使用与new一起使用的函数时,this将指向全局对象而不是新对象.

  • 这是不正确的.Javascript是区分大小写的,但Javascript不会以任何不同的方式处理函数,如果它以大写字母开头 - 没有特别的行为只是因为某些东西以大写字母开头.有些样式约定以某种方式使用大写,但这些是关于如何使用该语言的纯粹风格意见. (5认同)
  • 不,这段代码在Node.js中工作正常.Node.js不会强迫您遵循该约定.错误/警告消息可能来自JSHint,可以在文本编辑器中进行配置. (3认同)