當您嘗試呼叫未在 JavaScript 程式碼中定義的函數時,您可能在控制台中看到了 undefined
錯誤。 JavaScript 拋出此錯誤並停止執行程式碼。
在本文中,我將教您如何檢查函數是否存在。這樣,您可以避免任何可能的錯誤。這是一種有用的技術,可用於查看特定程式庫或 API 在您執行軟體的用戶端中是否可用。
JavaScript 有幾種不同的方法來查看函數是否存在。我將向您展示幾個。
if
條件語句檢查函數是否已定義的一種方法是使用 if
語句來測試它。訣竅是將該函數作為 window
物件的方法進行測試。
所以,如果你想測試 aFunctionName
,只要使用:
if (window.aFunctionName) { // ... }
如果定義了函數,則會執行括號中的程式碼。相反,如果您只是測試函數而不使用視窗對象,例如 if(aFunctionName)
,則如果函數不存在,JavaScript 將拋出 ReferenceErorr
。
讓我們考慮以下範例,該範例檢查兩個函數是否存在:一個存在,另一個不存在。
// Testing a function that exists function exists() { // ... } if (window.exists) { console.log('the exists() function exists'); } else{ console.log('the exists() function does not exist'); } if(window.doesntExist) { console.log('the doesntExist() function exists'); } else{ console.log('the doesntExist() function does not exist'); }
上面的程式碼片段將輸出:
the exists() function exists the doesntExist() does not exist
這對我們的範例非常有效,但該方法的一個問題是我們沒有檢查命名物件是否實際上是一個函數。事實上,任何具有相同名稱的變數都會欺騙我們的測試,讓我們認為該函數已定義。
typeof
運算子或者,我們可以使用 typeof
運算子。該運算符將檢查聲明的函數的名稱是否存在以及它是否是函數而不是其他類型的物件或基元。
if (typeof nameOfFunction === 'function') { nameOfFunction(); }
在上面的範例中,我們測試 nameOfFunction
是否存在,如果存在則執行它。
嘗試...catch
區塊try…catch
區塊處理該區塊內可能發生的錯誤。我們將使用此方法來處理當我們呼叫未定義的函數時 JavaScript 會拋出的 undefined
錯誤。
try...catch
語句如何運作我們在 try
區塊內執行函數。如果不存在,則會拋出異常,並由 catch
區塊處理。
這是一個例子:
try { testFunction(); } catch(err) { console.log(err); }
如果 testFunction
未定義,則會將下列訊息輸出到控制台。
ReferenceError: testFunction is not defined
這也是我們在沒有 try...catch
區塊時看到的情況,但在這種情況下,我們的程式碼將繼續在 catch 區塊下方運行。
本文介紹了在呼叫函數之前檢查 JavaScript 中是否存在函數的三種主要方法。這些是 if
條件語句的使用、typeof
運算子的使用,最後是 try...catch
語句。我還使用範例來解釋 JavaScript 如何實作這些方法來檢查函數是否存在。我希望您現在對這個概念更加清楚了!
以上是檢查 Java 腳本中函數是否存在的詳細內容。更多資訊請關注PHP中文網其他相關文章!