2015-06-23 45 views
1

我想知道在我的JavaScript函數中是否有任何缺陷console.log作爲調試。在JavaScript中使用console.log有什麼缺點嗎?

的JavaScript:

var debugMSG = "DEBUG: " 
var debugFStart = debugMSG + "Starting Function. Name; " 
var debugFFinish = debugMSG + "Ending Function. Name; " 

function myFunction1() { 
     console.log(debugFStart + "myFunction1()") 
     alert("Function 1 is being used!") 
     console.log(debugFFinish + "myFunction1()") 
} 
function myFunction2() { 
     console.log(debugFStart + "myFunction2()") 
     alert("Function 2 is being used!") 
     console.log(debugFFinish + "myFunction2()") 
} 

難道是壞以任何方式離開這個代碼我的網站文件裏面,當我把它上傳?

+0

我看不出有任何的傷害,比警戒調試好 –

+1

那麼這意味着任何人都可以打開控制檯,看到了消息,也取決於你的瀏覽器支持一些不支持'console'也不'控制檯。 log'。 – GillesC

+0

瀏覽器支持是一個很好的觀點。 –

回答

3

console.log是一個開發工具 - 它沒有任何關係與您的應用程序的功能,因此它不應該部署到生產。

請記住,您擁有的代碼越多,引入錯誤的機會就越大。因此,你應該儘可能簡潔(,但不能更多,以解釋愛因斯坦;))例如,在這種情況下,你必須記住要考慮到瀏覽器沒有實現對象console。在這種情況下,您的console.log施工導致錯誤。是的,你可以說明這一點,有條件地製作一些模擬對象,但是,嘿,你只是讓你的應用程序更復雜。

1

是的,它會讓你的代碼不易讀。這可能會減少到

function myFunction1() { 
    alert("Function 1 is being used!") 
} 
function myFunction2() { 
    alert("Function 2 is being used!") 
} 

很好,很簡單。

如果您需要記錄,使用記錄器(console.log()是一個簡單的記錄器)。

如果您需要調試,請使用debugger

2

http://caniuse.com/#search=console

IE8/9:只支持控制檯功能時,開發者工具打開,否則控制檯對象是不確定的任何調用將拋出錯誤。

我會建議添加一個定義來防止這些情況,如this question

我遇到了一個網站,第一個腳本中有一個console.log,所有下面的腳本都因此失敗。

如果你可以使用console對象的全部潛力,我會建議 這些讀數:

+1

好點! +1 – brandelizer

0

並非所有的瀏覽器都支持console.log。舊IE不支持console.log。因此,如果您的應用/網站仍支持這些舊瀏覽器,請移除控制檯日誌,或者只需創建一個回退功能來支持它。

Testing for console.log statements in IE

相關問題