2016-07-06 6 views
0

私はrails/phpを開発して現在nodejsを学んでいますが、ミスタイプのときはいつでも構文エラーや警告を出さないと困惑します。例えば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(); 
}); 

他の言語では、それは通常、そのライン上のエラーを言うが、nodejsであり、いずれもありませんし、それが近いイベントが実行されていない理由を把握するために私に5分を要しました。

この言語を初めて使う人は誰でも説明できますか?

+0

'他の言語では、通常、その行にエラーが表示されます。これは、使用しているエディタに依存します。メモ帳を使用すると、それはできません:) Nodeの場合、あなたのコードにいくつかのチェックを実行します。 –

+0

私は原子を使っています..何も言わない.. – XDProgrammer

+2

原子はテキストエディタです。 https://atom.io/packages/atom-jshint –

答えて

3

rl.closeは、関数への有効な参照です。 Javascript言語仕様では、実際のJavascriptエラーではありません。

何かに割り当てたり渡したりしないと何もしないので、いくつかのLintプログラムは警告として警告しますが、技術的にはJavascriptエラーではありません。

例えば、jsHint(Javascriptのためのlintプログラムは)あなたにこの警告与える:代入や関数呼び出しを期待

を、代わりに式を見ました。

JavaScript言語は、それはあなたが書くことと、それが解析されますどのようなことができるものにかなり寛容であるので、あなたがlintプログラムを通して、あなたのコードを実行し、すべてのあなたがそこに見るの警告を修正するか理解していることを一般的に推奨されます。これは一般的にあなたに多くの時間を節約します。

+0

を見てくださいが、それは悪いことではありませんか?数百行のコードがある場合、問題を引き起こすものを見つけるのは非常に難しいでしょう。私はただのコンソールです。私に警告を与えるために使用できるプログラムはありますか? – XDProgrammer

+0

@ XDProgrammer JSHintは1つです –

+0

@ XDProgrammer - 私は悪いことは何も論じません(それはかなり純粋な意見です)。言語はそのとおりであり、変更することはできません。あなたがプログラムを作成する場合は、適切なツールを使用してリスクを最小限に抑える方法を学んでください。私は既に[jsHint](http://jshint.com/)を使用するための勧告を含んでいますが、そこから選択する類似のツールが多く、エディタに組み込まれているものもあります。 – jfriend00

関連する問題