Node.js 当缺少括号时,NodeJS不提供错误通知

Node.js 当缺少括号时,NodeJS不提供错误通知,node.js,Node.js,我是rails/php开发人员,目前正在学习nodejs,我只是有点困惑,当你输入错误时,他们不会给出语法错误或警告 例如: var readline = require('readline'); var rl = readline.createInterface(process.stdin, process.stdout); var ar = []; var nm = ''; rl.question("What is your name? ", function(name){ nm =

我是rails/php开发人员,目前正在学习nodejs,我只是有点困惑,当你输入错误时,他们不会给出语法错误或警告

例如:

var readline = require('readline');
var rl = readline.createInterface(process.stdin, process.stdout);
var ar = [];
var nm = '';

rl.question("What is your name? ", function(name){
  nm = name;

  rl.setPrompt(`words? `);
  rl.prompt();
  rl.on('line', function(str){

    ar.push(str.trim());

    if(str.toLowerCase().trim() == 'exit'){
      rl.close();  // <--- I forgot to add '()' on this line but the program still runs, no warnings at all. 
    }else{
      rl.setPrompt(`add more ('exit' to leave)`);
      rl.prompt();
    }

  });
});

// Because I forgot '()' this event did not execute '
rl.on('close', function(){
  console.log(name " " + ar);
  process.exit();
});
var readline=require('readline');
var rl=readline.createInterface(process.stdin,process.stdout);
var-ar=[];
var nm=“”;
rl.问题(“你叫什么名字?”,函数(名称){
nm=名称;
rl.setPrompt(`words?`);
rl.prompt();
rl.on('line',函数(str){
ar.推(str.trim());
如果(str.toLowerCase().trim()=='exit'){

rl.close();//
rl.close
是对函数的有效引用。根据Javascript语言规范,它不是任何类型的实际Javascript错误

事实证明,如果您没有将其分配或传递给某个对象,那么它将不会执行任何操作,因此一些Lint程序会将其标记为警告,但从技术上讲,这并不是Javascript错误

例如,jsHint(Javascript的Lint程序)将向您发出以下警告:

应为赋值或函数调用,而应为表达式


由于Javascript语言在允许您编写的内容和解析的内容方面相当宽松,因此通常建议您通过lint程序运行代码,并修复或理解在那里看到的每个警告。这通常会节省大量时间。

rl.close
是对函数的有效引用。PerJavascript语言规范,它不是任何类型的实际Javascript错误

事实证明,如果您没有将其分配或传递给某个对象,那么它将不会执行任何操作,因此一些Lint程序会将其标记为警告,但从技术上讲,这并不是Javascript错误

例如,jsHint(Javascript的Lint程序)将向您发出以下警告:

应为赋值或函数调用,而应为表达式


由于Javascript语言在允许您编写的内容和解析的内容方面相当宽松,因此通常建议您通过lint程序运行代码,并修复或理解在那里看到的每个警告。这通常会为您节省大量时间。

在其他语言中,通常会在该行显示错误这取决于您使用的编辑器…如果您使用记事本,则不会:)在Node的情况下,像VS Code这样安装了JSHint的富编辑器将使用atom对您的codeIm运行一些检查..它什么都没有说..因为atom是一个文本编辑器。在其他语言中,它通常会在那一行显示错误这取决于您使用的编辑器…如果您使用记事本,它不会:)在Node的例子中,像VS Code这样安装了JSHint的富编辑器将使用atom对您的codeIm运行一些检查。它什么都没有说。因为atom是一个文本编辑器。我明白了,但这不是一件坏事吗?如果您有几百行代码,很难找到导致问题的原因,我只是控制台,是吗有什么程序可以给我警告吗?@XDProgrammer JSHint是one@XDProgrammer-我不想争论什么是或不是坏事(这几乎是纯粹的观点)。语言就是这样,我们不能改变它。如果你要用它编程,那么就要学会使用适当的工具来最小化风险。我已经提供了一个使用建议,尽管有许多类似的工具可供选择,有些工具也内置在编辑器中。@XDProgrammer-因为看起来你可能比较新的堆栈溢出,如果这回答了您的问题,那么请通过单击答案旁边的绿色复选标记向社区指出。这也会为您按照正确的过程赢得一些堆栈溢出信誉点。我明白了,但这不是一件坏事吗?如果您有几百行代码,它将非常不同我很难找到导致问题的原因,我只是控制台,有什么程序可以用来给我警告吗?@XDProgrammer JSHint是one@XDProgrammer-我不想争论什么是或不是坏事(这几乎是纯粹的观点)。语言就是这样,我们不能改变它。如果你要用它编程,那么就要学会使用适当的工具来最小化风险。我已经提供了一个使用建议,尽管有许多类似的工具可供选择,有些工具也内置在编辑器中。@XDProgrammer-因为看起来你可能比较新的堆栈溢出,如果这回答了你的问题,那么请通过单击答案旁边的绿色复选标记向社区指出。这也将为你赢得一些堆栈溢出信誉点,以遵循正确的程序。