簡體   English   中英

我該如何調試JavaScript錯誤?

[英]How do I debug javascript errors like this?

我是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/

eslint。 甚至還有一個特定的規則: http : //eslint.org/docs/rules/no-undef

您可能應該得到一個ReferenceError,因為let / const表示嚴格的語法,盡管如果您錯過了我以為您的引擎由於某種原因而沒有采用嚴格模式的情況。 無論如何,使用靜態分析來查找是一個更好的錯誤,因為即使從未調用該函數,它也會拾取錯誤。

我建議您嘗試一下TypeScript。 TypeScript操場上查看您的示例。

它會立即告訴您:在send函數中Cannot find name msg

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM