簡體   English   中英

啟用console.log的驗證之間的區別

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM