如何檢查 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 塊。
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP