如何检查 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]”。因此,它打印上述输出。
结论
在本教程中,我们看到了三种检查变量是否为函数实例的方法。用户可以根据自己的舒适度使用任何一种方法。第一种和第二种方法具有简单的语法来查找变量类型,因此用户可能在使用第三种方法之前尝试这些方法。