2016-07-06 10 views
0

Ich bin ein Rails/PHP zu entwickeln und gerade Nodejs zu lernen, ich bin nur ein wenig verwirrt, dass sie keine Syntaxfehler oder Warnungen geben, wenn Sie etwas falsch eingeben.NodeJS gibt keine Fehlermeldungen, wenn fehlende Klammern

Zum Beispiel:

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(); 
}); 

In anderen Sprachen, heißt es in der Regel einen Fehler auf dieser Linie aber in NodeJS gibt es keines und es dauerte 5 Minuten, um herauszufinden, warum das close-Ereignis wird nicht ausgeführt.

Ich bin neu in dieser Sprache, könnte jemand erklären warum?

+0

'In anderen Sprachen sagt es normalerweise einen Fehler in dieser Zeile' gut es hängt von dem Editor ab, den Sie verwenden ... wenn Sie Notepad verwenden, wird es nicht :) Im Falle von Node, ein reicher Editor wie VS Code mit JSHint installiert _will_ führen einige Prüfungen auf Ihrem Code –

+0

Im mit Atom .. es sagt nichts .. – XDProgrammer

+2

Weil Atom ist ein Texteditor. Check out https://atom.io/packages/atom-jshint –

Antwort

3

rl.close ist ein gültiger Verweis auf eine Funktion. Laut der JavaScript-Sprachspezifikation handelt es sich nicht um einen tatsächlichen Javascript-Fehler.

Es stellt sich heraus, dass nichts zu tun ist, wenn Sie es nicht zuweisen oder an etwas weitergeben, sodass einige Lint-Programme es als Warnung kennzeichnen, aber es ist eigentlich kein Javascript-Fehler.

Zum Beispiel jsHint (a Lint Programm für Javascript) gibt Ihnen diese Warnung:

einen Auftrag oder Funktionsaufruf erwartet und stattdessen einen Ausdruck sah.

Da die Javascript Sprache in ziemlich freizügig ist, was es erlaubt Ihnen zu schreiben und was es zu analysieren, ist es in der Regel empfohlen, dass Sie Ihren Code durch ein Fussel-Programm ausführen und beheben oder jede Warnung Sie sehen, es zu verstehen. Dies spart Ihnen in der Regel viel Zeit.

+0

Ich sehe, aber ist das nicht eine schlechte Sache? Wenn Sie ein paar hundert Zeilen Code haben, wäre es sehr schwierig zu finden, was das Problem verursacht, ich bin nur die Konsole, gibt es ein Programm, das ich verwenden kann, um mir Warnungen zu geben? – XDProgrammer

+0

@ XDProgrammer JSHint ist ein –

+0

@ XDProgrammer - Ich werde nicht streiten, was ist oder nicht eine schlechte Sache (das ist ziemlich reine Meinung). Die Sprache ist so wie sie ist und wir können sie nicht ändern. Wenn Sie darin programmieren, dann lernen Sie, die geeigneten Werkzeuge zu verwenden, um Ihre Risiken zu minimieren. Ich habe bereits eine Empfehlung zur Verwendung von [jsHint] (http://jshint.com/) hinzugefügt, obwohl es viele ähnliche Tools zur Auswahl gibt und einige auch in Editoren integriert sind. – jfriend00

Verwandte Themen