2017-03-08 88 views
0

我有下面的代碼找到了一個錯誤:如何調試JavaScript函數

function something(callback) { 
    somethingElse(function(err, res) { 
    if (err) { 
     callback(err); 
    } 
    callback(null, res); 
    }); 
} 

something(function(err, res){ 
    console.log(err,res); 
}); 

//something else defined elsewhere 

應該在哪裏我開始?我尋找語法和事情看起來不錯,並試圖尋找一些可能捕獲的明顯問題。我應該從哪裏開始,我應該使用什麼概念?

+2

嘗試開發者控制檯? – BenM

+0

縮進,筆記,記錄每一步,如果一個步驟沒有記錄通常意味着這是它破壞的地方。也不要使用你剛剛開始的速記條件。 – EasyBB

+0

開發者控制檯會給出someElse沒有定義的錯誤,並且我沒有實際的東西可以使用 – Arihant

回答

0

我的猜測是這是一個分數問題。 somethingElsesomething的範圍內不可用。如果在同一範圍內定義somethingElse,則可能在something的末尾添加.bind(this)將解決該問題。

function something(callback) { 
    somethingElse(function(err, res) { 
    if (err) callback(err); 
    callback(null, res); 
    }); 
}.bind(this) 

something(function(err, res){ 
    console.log(err,res); 
}); 

//something else defined elsewhere 

如果你能告訴我們更多的代碼,具體在哪裏somethingElse定義,這將有助於我們幫助您

-1

你應該這樣做的第一件事就是檢查開發者控制檯。 Chrome調試窗口如下圖所示。

在代碼中放置console.log以模擬斷點是使用Javascript進行調試的最簡單方法。

使用異步函數時需要注意的一點是this指針,它可能很容易指向不同的範圍。使用.bind(this)一個異步函數後會異步指向內部的this指針強制

enter image description here