如何检查 JavaScript 变量是否为函数类型?


在本教程中,我们将学习检查 **JavaScript 变量** 是否为 **函数** 类型 的不同方法。在 JavaScript 中,函数包含代码块,使代码重用性更好。

主要有两种方法可以声明函数,一种是 **命名函数**,另一种是 **匿名函数**。在声明匿名函数时,我们需要将其存储在某个变量中,以便从代码中的某个地方访问它或调用该函数。

在这里,用户可以看到如何声明 **匿名** 函数并将其存储到变量中。

let tutorialspoint = function() { //code for the function}

如上例所示,'tutorialspoint' 变量包含函数,有时程序员需要检查它是否为函数类型。

为了解决上述问题,我们可以使用以下不同的方法。

  • 使用 typeof 运算符
  • 使用 instanceof 运算符
  • 使用 object.prototype.toString 方法

使用 typeof 运算符

在 JavaScript 中,可以使用 **typeof** 运算符确定任何变量的数据类型。它以字符串格式返回其操作数的数据类型的值。

在这里,我们可以使用 JavaScript 中的字符串相等 **'==='** 运算符来比较返回值与字符串 'function'。如果返回值与 'function' 匹配,则该变量为函数类型。

用户可以按照以下语法使用 typeof 运算符。

语法

typeof operand
typeof(operand)

参数

  • 操作数 - 它可以是任何对象或变量,我们需要检查它是否为函数类型。

返回值 - 以字符串格式返回 '操作数' 的数据类型的值。

示例 1

以下示例演示了如何使用 typeof 运算符检查变量是否为函数类型。

<html>
<head>
   <title>Check type of variable is of function</title>
</head>
<body>
   <h2> typeof Operator: Check if a variable is of function type. </h2>
   <div id = "result"></div>
   <script type="text/javascript">
      let a = 10;
      let b = 20;
      var tutorialsPoint = function () {
         return a + b;
      };

      // function to check type of variable is function or not
      function checkTypeOfVar() {
         if (typeof tutorialsPoint === 'function') {
            document.write("<br>The type of <i>tutorialsPoint</i> variable is function." );
         } else {
            document.write("The type of <i>tutorialsPoint</i> variable is not a function.");
         }
      }
      document.getElementById("result").innerHTML = "var tutorialsPoint = " + tutorialsPoint;

      // call the function
      checkTypeOfVar();
   </script>
</body>
</html>

在上面的代码中,用户可以看到 typeof tutorialsPoint 返回 'function',函数的控制权进入 'if' 块并给出上述输出。

使用 instanceof 运算符

**'instanceof'** 运算符帮助我们确定任何变量是否为给定类型。它接受两个操作数,一个变量和另一个数据类型、对象、函数或任何要与当前变量类型进行比较的内容。

在我们的例子中,我们将采用函数作为操作数,因为我们想要检查变量是否为函数类型。它返回布尔值,如果变量的类型与给定类型匹配,则返回 true;否则返回 false。

语法

variable instanceof datatype

在上述语法中,作为数据类型,我们将采用 **'Function'**,因为我们需要验证 变量 类型是否为函数。如果变量为 Function 类型,则返回 true。

示例 2

在下面的示例中,我们使用 instanceof 运算符检查变量的函数类型。

<html>
<head>
   <title>Check type of variable is of function</title>
</head>
<body>
   <h2> <i>instanceof</i> Operator: check if a variable is of function type. </h2>
   <div id = "result"></div>
   <script type="text/javascript">
      let a = 10;
      let b = 20;
      var multiply = function () {
         return a * b;
         // other code for the function
      };

      // function to check type of variable is function or not
      function checkTypeOfVar() {
         let isTypeOfFunction = multiply instanceof Function;
         if (isTypeOfFunction===true) {
            document.write("<br>The type of <i>multiply</i> variable is <b>function</b>.");
         } else {
            document.write("<br>The type of multiply variable is not a function.");
         }
      }
      document.getElementById("result").innerHTML = "var multiply = " + multiply ;

      // call the function
      checkTypeOfVar();
   </script>
</body>
</html>

在上面的代码中,用户可以看到 instanceof multiply Function 返回“true”,函数的控制权进入 'if' 块,并打印上述输出。

使用 object.prototype.toString 方法

通常,当对象需要在 JavaScript 中返回字符串时,会自动为每个对象调用 **object.prototype.toString** 方法。此外,如果我们不覆盖 **object.toString()** 方法的默认返回值,我们可以覆盖 **toString** 方法的返回值,则为 '[Object 类型]',其中类型为对象类型。

在这里,我们将检查它是否返回 'Function' 类型。

获取任何对象或变量类型的标准语法如下。

语法

Object.prototype.toString.call(Object_Name) == '[ object Function]'

在上述语法中,我们必须在 Object_Name 的位置传递变量以检查它是否为函数类型。

参数

  • Object_Name - 要检查的变量,以确定它是否为函数类型。

示例 3

在下面的示例中,我们使用 Object.prototype.toString 方法获取变量的类型。

<html>
<head>
   <title>Check type of variable is of function</title>
</head>
<body>
   <h2><i>object.prototype.toString()</i> Methodd </h2>
   <div id = "result"></div>
   <script type="text/javascript">
      let a = 10;
      let b = 20;
      var substract = function () {
         return a - b;
         // other code for the function
      };

      // function to check type of variable is function or not
      function checkTypeOfVar() {
         // get the type of tutorialsPoint variable
         let typeOfVar = Object.prototype.toString.call( substract );

         // compare typeOfVar with the funciton type
         if (typeOfVar == '[object Function]') {
            document.write("<br>The type of <i>substract </i> variable is <b>function</b>.");
         } else {
            document.write("<br>The type of substract variable is not a function.");
         }
      }
      document.getElementById("result").innerHTML = "var substract = " + substract ;

      // call the function
      checkTypeOfVar();
   </script>
</body>
</html>

在上面的代码中,用户可以看到 Object.prototype.toString.call(subtract) 方法返回“[object Function]”。因此,它打印上述输出。

结论

在本教程中,我们看到了三种检查变量是否为函数实例的方法。用户可以根据自己的舒适度使用任何一种方法。第一种和第二种方法具有简单的语法来查找变量类型,因此用户可能在使用第三种方法之前尝试这些方法。

更新于: 2022年7月12日

5K+ 次浏览

启动您的 职业生涯

通过完成课程获得认证

开始学习
广告