如何检查 JavaScript 函数是否已定义?


在本教程中,我们将学习如何检查 JavaScript 函数是否已定义。如果程序员在未定义 JavaScript 函数的情况下调用它,他们将会看到引用错误,并出现类似“函数未定义”的消息。

为了解决这个问题,程序员可以检查函数是否已定义,然后再调用它。

下面我们将介绍几种在 JavaScript 中检查函数是否已定义的方法。

使用 typeof 运算符

在 JavaScript 中,typeof 运算符用于检查变量、函数、对象等的类型。当我们将函数名作为 typeof 运算符的操作数时,它将返回字符串 ‘function’,我们可以通过此来检查函数是否已定义。如果函数未定义,typeof 运算符将返回 ‘undefined’

语法

以下是 typeof 运算符的语法。

let isFunction = typeof function_name === 'function'

参数

  • function_name − 这是没有括号的函数名,用户想要检查该函数是否已定义。

示例

在下面的示例中,我们将创建一个名为 test() 的函数。我们将使用 typeof 运算符来检查 test() 函数是否已定义。如果函数已定义,我们将调用该函数。否则,我们将打印一条消息,例如“函数未定义”。

Open Compiler
<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 运算符检查它是否已定义。

Open Compiler
<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>

Learn JavaScript in-depth with real-world projects through our JavaScript certification course. Enroll and become a certified expert to boost your career.

使用 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 块。

Open Compiler
<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+ 次查看

启动您的 职业生涯

完成课程获得认证

开始学习
广告