2016-10-10 16 views
2

私はJavaScriptに新たなんだと次のコードは働いていなかった理由を把握しようとしていた。どうすればこのようなjavascriptエラーをデバッグできますか?

let ws = new WebSocket("ws://echo.websocket.org/"); 
ws.onmessage = msg => console.log(msg); 
let queue = []; 
ws.onopen =() => { 
    queue.forEach(msg => ws.send(msg)); 
}; 

const send =() => { 
    if(ws.readyState === ws.OPEN){ 
     ws.send(msg); 
    } 
    else{ 
     queue.push(msg); 
    } 
}; 

send("foo"); 
send("bar"); 

その後、私は私が必要なことに気づい:let send = (msg) => {を。

問題を見つける前に、lintとdevツールを使用しましたが、警告が表示されませんでした。問題の種類を見つけるために何をすべきですか?

http://www.es6fiddle.net/iu3qwem6/

+0

"* ReferenceError:msg is not defined *"というエラーはありませんか? – Kaiido

+0

@いいえこの警告は表示されません。 Firefox 49.0.1を使用しています。何か他のものを使っているべきですか? – Baz

+0

私は50.0b3にあり、ES6Fiddleにコードを貼り付けてコピーすると、babel.jsからエラーが出る – Kaiido

答えて

0

eslint。 http://eslint.org/docs/rules/no-undef

let/constは厳密な構文を意味するため、おそらくReferenceErrorを取得する必要がありますが、あなたのエンジンがstrictモードでピックアップされていなかったと思っていない場合は、どんな理由であれ。たとえ関数が呼び出されなくてもエラーを取り除くため、静的解析を使用して見つけるのが良い方法です。

0

TypeScriptを試してみることをお勧めします。あなたの例をTypeScript playgroundに見てください。

sendファンクション内にCannot find name msgがすぐに表示されます。

関連する問題