2016-10-31 57 views
2

我搜索了很多,但無法得到正確/更新的答案(arguments.caller.callee不存在,似乎)。我想知道調用特定函數的代碼行號。我得到this解決方案,其中可以檢索函數調用者名稱。如何獲得調用函數的代碼行號碼

但我在JQuery UI droppable中調用我的函數。 例如:

$("#id").droppable({ 

stop: function(e,u){ 

    main(); // I want this line number 
} 

}); 

這就是我想知道行號的原因。有什麼辦法嗎?

+1

我用'嘗試{拋出新錯誤( 「線」)}趕上(E){的console.log(e.stack.split( 「AT」)[1])} ' –

+0

有什麼行號呢? – epascarello

+0

@epascarello:用於調試 –

回答

1

如果使用console.error(),它會顯示調用堆棧和行號(至少在Chrome中,當您單擊黑色小箭頭):

function foo(){ 
    bar(); 
} 

function bar(){ 
    console.error("hello"); 
} 

foo(); 

會顯示:

enter image description here

檢查此琴(console.error不片斷正常工作):https://jsfiddle.net/fs1qqe77/

+0

我認爲這對鍍鉻很好。但它可以在所有瀏覽器中使用嗎? –

+0

我不確定,但我認爲你只需要它在你用來調試的瀏覽器中,對吧? –

+0

是的!我用鉻。有用 –

0

我有嘗試用trycatchthrow

注:摘錄工作的iframe內部,以便線不會是正確的。

var i = 2016; 
 
i++; 
 
var str = "Happy new year "+i; 
 

 
try{ 
 
clog();throw new error("l"); 
 
}catch(e){ 
 
console.log("current line: "+e.stack.split(" at ")[1]);//current file and line 
 
} 
 

 

 
function clog(){ 
 
console.log(str); 
 
}

相關問題