如何檢查JavaScript函式是否已定義?


在本教程中,我們將學習如何檢查JavaScript函式是否已定義。如果程式設計師在未定義的情況下呼叫JavaScript函式,他們將看到引用錯誤,並顯示類似“函式未定義”的訊息。

為了克服這個問題,程式設計師可以檢查函式是否已定義,然後再呼叫函式。

下面我們將介紹幾種在JavaScript中檢查函式是否已定義的方法。

使用typeof運算子

在JavaScript中,typeof運算子用於檢查變數、函式、物件等的型別。當我們使用函式名作為typeof運算子的運算元時,它將返回'function'字串,我們可以透過此來檢查函式是否已定義。如果函式未定義,typeof運算子將返回'undefined'

語法

以下是typeof運算子的語法。

let isFunction = typeof function_name === 'function'

引數

  • function_name − 這是不帶括號的函式名,使用者想要檢查該函式是否已定義。

示例

在下面的示例中,我們將建立一個名為test()的函式。我們將使用typeof運算子來檢查test()函式是否已定義。如果函式已定義,我們將呼叫該函式。否則,我們將列印一條訊息,例如“函式未定義”。

<html> <head> </head> <body> <h2>Check if function is defined in Javascript.</h2> <h4>Check if function is defined using <i> typeof operator.</i></h4> <div id = "output"></div> <script> var output = document.getElementById("output"); function test() { output.innerHTML = "function test() is defined."; } if (typeof test === 'function') { test(); } else { output.innerHTML = "function is not defined."; } </script> </body> </html>

在上面的輸出中,使用者可以看到由於函式已定義,控制流進入了if語句,並列印了函式中的訊息。

使用instanceof運算子

在JavaScript中,instanceof運算子用於檢查物件型別變數的型別。函式、物件、陣列等都是JavaScript物件型別。因此,程式設計師可以使用它與instanceof運算子一起使用。

我們將使用Function物件作為instanceof運算子的右運算元,並將函式名作為左運算元。如果變數是函式型別,則返回true,否則返回false。

語法

使用者可以使用以下語法來檢查函式是否已定義:

let isFunction =function_name instanceof Function;

示例

下面的示例演示了instanceof運算子與函式物件的用法。我們建立了demo()函式,並使用instanceof運算子檢查它是否已定義。

<html> <head> </head> <body> <h2>Check if function is defined in JavaScript.</h2> <h4>Check if function is defined using <i> instanceof operator.</i></h4> <div id = "output"></div> <script> var output = document.getElementById("output"); function demo() { output.innerHTML = "Inside the function call."; } if (demo instanceof Function) { demo(); } else { output.innerHTML = "function is not defined."; } </script> </body> </html>

使用try-catch塊

在JavaScript中,try-catch塊用於錯誤處理。當程式設計師在未定義的情況下呼叫函式時,JavaScript會產生引用錯誤。我們將把函式呼叫放在try塊中以處理錯誤。如果函式未定義,控制流將自動進入catch塊以處理錯誤並終止程式的執行。

語法

使用者可以按照以下語法使用try-catch塊來檢查函式是否已定義。

try {
   
   // call the function here
} catch (e) {
   
   // if the function is not defined, control comes here.
}

示例

下面的示例演示了try-catch塊與函式呼叫的用法。我們定義了demo()函式,並從try塊中呼叫了test()函式。這將產生錯誤,控制流將進入catch塊。

<html> <head> </head> <body> <h2>Check if function is defined in Javascript.</h2> <h4>Check if function is defined using <i> try-catch </i> block.</h4> <div id = "output"></div> <script> var output = document.getElementById("output"); function func() { output.inerHTML = "Inside the function call."; } try { test(); } catch (e) { output.innerHTML = "Inside the catch block. <br/>"; output.innerHTML += "function is not defined."; } </script> </body> </html>

在上面的輸出中,使用者可以看到test()函式未定義,因此控制流進入catch塊並列印了catch()塊的所有訊息。

我們學習了三種不同的方法來檢查函式是否已定義。第一種和第二種方法非常相似,因為它們都檢查物件型別。第三種方法不檢查變數的型別,但是如果在呼叫函式時發生任何錯誤,它會將控制流傳送到catch塊。

更新於:2022年8月8日

14K+ 次瀏覽

啟動您的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.