如何检查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>
在上面的代码中,用户可以看到`multiply instanceof Function`返回“true”,函数的控制流进入'if'块并打印上述输出。
使用`object.prototype.toString`方法
通常,当对象需要在JavaScript中返回字符串时,会自动为每个对象调用**`object.prototype.toString`**方法。此外,如果我们不覆盖`object.toString()`方法的默认返回值,我们也可以覆盖`toString`方法的返回值,默认返回值是'[Object Type]',其中type是对象类型。
在这里,我们将检查它是否返回'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]”。所以,它打印了上述输出。
结论
在本教程中,我们已经看到了三种检查变量是否为函数实例的方法。用户可以根据自己的方便程度使用任何一种方法。第一种和第二种方法具有直接的语法来查找变量类型,因此用户可能在使用第三种方法之前会选择它们。