[英]Difference between console.log enabled verification
我已經看到jquery-ui-1.8.11.js
通過執行jquery-ui-1.8.11.js
驗證console.log
功能
if (this.debug)
console.log()
我還看到人們定義了一個匿名函數,該函數對於沒有控制台日志記錄的瀏覽器(如IE7)是不起作用的。
if(typeof console === "undefined") {
console = { log: function() { } };
}
是否存在技術差異或功能上均相同?
在您給出的第一個示例中, this.debug
將是對jQueryUI代碼中debug
變量的引用。 該調試變量將在其他位置設置,可能是通過檢查是否定義了console
,也可能是通過其他設置。
無論如何,第一個示例是特定於該應用程序的; 如果要進行常規檢查以查看控制台是否可用,則需要使用第二種技術。 您不必按照示例定義一個空的console
對象,但是這樣做意味着您不必每次都要調用console.log()
時就執行if()
條件。
綜上所述,我強烈建議您避免將任何包含console
調用的代碼投入生產。 在您處理代碼時,只能將控制台用於調試目的。 在最終發行版中沒有必要這樣做,這樣做可能表明您的代碼不穩定或不確定,如果您要釋放代碼以供實時使用,那么這都不是一個好兆頭。
(諸如jQueryUI之類的庫是該規則的例外,因為它們需要提供功能供開發人員在使用其庫編寫代碼時進行調試)
兩者都做其他事情。 第一個代碼禁止記錄日志消息,除非設置了標志。 開發jQuery UI的人員在進行操作時需要記錄日志,然后將其打開。 但是,使用該庫的人不希望自己的控制台因來自庫的日志消息而混亂,因此默認情況下處於關閉狀態。 它使您即使在瀏覽器支持的情況下也可以關閉日志記錄功能– IE7上的普通用戶不會收到腳本錯誤是(可能是故意的)副作用。
第二個代碼定義了一個虛擬console.log(),因此您可以調用該方法而無需檢查它是否到處存在。 它不會抑制在支持它的瀏覽器上的登錄。
兩者中的第二個是獨立的,不依賴jQuery。 我認為,這樣做會更好。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.