2013-11-25 1 views
1

간단한 로그 기능을 사용하고 있습니다. 내 코드에서 로그를 사용할 때, 콘솔 메시지가 어디에 쓰여졌는지, 어디서 쓰여졌는지가 아닌 라인 번호에 콘솔 메시지를 보여줍니다 (분명히 알 수 있습니다). 코드를 올바르게 디버깅 할 때 줄 번호를 사용할 수 있습니까? 미리 감사드립니다!로그가 사용하는 행 번호를 어떻게 표시합니까?

/** 
* Description: Console log 
* @param {Object} p_sMessage 
*/ 
function log(p_sMessage) { 
    if(!Debug) { return; } 
    else { if(window.console) { console.log(p_sMessage); }} 
} 
+0

예외를 던지고 잡는 것을 시도한 다음 스택 추적에서 추출 할 수있는 것을 확인하십시오. – gustavohenke

+0

@Florent dup이 아니라 **이 함수 **를 호출하는 행 **의 행 번호를 얻는 방법을 묻습니다. – Doorknob

답변

2

무슨이에 코드를 변경하는 방법에 대한 :

log = Debug && window.console 
    ? window.console.log.bind(window.console) 
    : function() {}; 

log 단순히 별칭으로 역할을이 방법 window.console.log와 그 때문에 스택 추적에 다른 단계를 추가하지 마십시오.

+0

굉장! 고마워요. – KunJ

+0

환영합니다 :) – sroes

+0

IE 8 이하에서는'.bind '가 지원되지 않습니다. 지원이 필요한 경우 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/bind#Compatibility – sroes

2

이 기능을 사용하여 발신자의 줄 번호를 얻을 수 있습니다 :

function getLineNumber(){ 
    return (new Error).stack.split("\n")[4] 
} 
+0

이것은 함수 호출자의 행 번호가 아닌 함수의 행 번호를 가져옵니다. – Doorknob

+0

아니요, 호출자의 줄 번호를 가져옵니다. (새로운 오류) .stack.split ("\ n") [1] 함수의 행 번호를 가져옵니다. 당신은 그것이 작동하는지보기 위해 그것을 시험해 볼 수 있습니다. –

+0

죄송합니다, 실수. 당신의 대답을 좀 더 명확하게 편집했고, +1 – Doorknob

관련 문제