js中严格判断函数是否是函数

本文解析JavaScript中的isFunction函数,介绍其如何使用内置toString方法判断参数是否为函数,并举例说明其在编程实践中的应用。
 
function isFunction(fn) {
   return Object.prototype.toString.call(fn)=== '[object Function]';
}
在 JavaScript 中,判断一个变量是否为函数类型,可以通过 `typeof` 操作符或 `instanceof` 操作符来实现。由于函数在 JavaScript 中本质上是对象的一种类型,因此可以通过这些方法进行判断。 ### 使用 `typeof` 操作符 `typeof` 操作符可以返回变量的数据类型。对于函数类型,`typeof` 会返回 `"function"`,因此可以用于判断变量是否为函数。 ```javascript function isFunction(v) { return typeof v === 'function'; } // 示例 function exampleFunction() {} console.log(isFunction(exampleFunction)); // true console.log(isFunction(123)); // false console.log(isFunction("hello")); // false ``` ### 使用 `instanceof` 操作符 `instanceof` 操作符用于检测对象是否为某个构造函数的实例。函数是 `Function` 构造函数的实例,因此可以使用 `instanceof Function` 来判断变量是否为函数。 ```javascript function isFunction(v) { return v instanceof Function; } // 示例 function exampleFunction() {} console.log(isFunction(exampleFunction)); // true console.log(isFunction(123)); // false console.log(isFunction("hello")); // false ``` ### 综合判断 尽管 `typeof` 和 `instanceof` 都可以用于判断函数类型,但 `typeof` 更为常用,因为它直接返回 `"function"` 来标识函数类型,而 `instanceof Function` 也可以用于更严格的对象实例检查。 需要注意的是,对于内置函数(如 `Array.prototype.map`),`typeof` 仍然可以正确返回 `"function"`,而 `instanceof Function` 也能准确识别。 ```javascript console.log(typeof Array.prototype.map === 'function'); // true console.log(Array.prototype.map instanceof Function); // true ``` ### 总结 - 使用 `typeof v === 'function'` 可以快速判断变量是否为函数。 - 使用 `v instanceof Function` 可以进行更严格的对象实例检查。 两种方法都可以有效判断变量是否为函数类型,具体选择取决于实际需求。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值