2014-02-15 37 views
1
function eatSoup() { 
    // Need line number of where I was called from. [in this case, line 6] 
    var lineNumber = answerToThisQuestion(); 
} 

function cookSoup() { 
    eatSoup(); 
} 

如果您需要更多說明,只需詢問。如何獲取函數被調用的行號?

+0

把一個斷點,按照堆棧跟蹤。請參閱https://developers.google.com/chrome-developer-tools/ – elclanrs

+0

@elclanrs - 並非所有人都使用Chrome。 –

+0

你什麼時候需要它? (1)由於腳本正在運行,因此您(開發人員)可以關注它,(2)作爲腳本的數據,(3)在執行任何代碼之前(即靜態分析)? – Zirak

回答

2

您可以使用console.trace();來獲得完整的堆棧跟蹤。

2
function cookSoup() { 
    debugger; 
    eatSoup(); 
} 

這將觸發調試器,您可以從那裏看到行號。

0

這不符合標準的,有點錯位,以一條線,但...

var calledFromLineNumber = +((new Error).stack.split('\n')[2].split(':')[1]); 
+0

我得到'NaN' .....如果我刪除'+'我得到'/ localhost' – iConnor

+0

這適用於我http://jsfiddle.net/3bCDT/ – iConnor

相關問題