首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

JS如何判断是否是函数

很多刚接触 JavaScript 的程序员不知道可以把一个函数赋值给一个变量。我们可以把这个变量作为参数传递到另外的函数里,这时这个函数可以称之为回调函数。

在项目开发中回调函数是不可避免的,在涉及到异步操作时是绕不开的话题。我们需要确保传递进来的参数是一个有效的函数,才会进行下一步的处理。

在本文中,我们将介绍几种检查变量是否是函数的方式,以及它们各自的优缺点。

1.typeof 操作符

typeof 操作符返回一个字符串,表示右侧操作数的类型。对于函数来说,会返回字符串 “function”。

这种方式适用于各种函数,例如命名的函数,赋值到变量的函数,箭头函数等。示例代码如下:

这种方式很简洁,不过需要注意:部分浏览器存在 bug,对于 HTML 的 object 元素和 embed 元素上运行 typeof 会返回 “function”。例如在 Chrome 57 上:

在 jQuery 是这样处理的,除了用 typeof 之外,还判断了变量的 nodeType 属性是否为一个数字。

2.正则表达式匹配

这种方式利用了正则表达式强大的功能,把变量转成字符串,然后检查其中是否含有 “function”单词。如下:

这种方式可以处理大多数的情况,但是不能正确识别箭头函数和异步函数,对于特殊的对象也会误认为是函数:

3.toString() 方法

可以使用 toString() 方法检查一个变量的类型,它会获得变量的字符串表现形式,然后和字符串 ‘[object Function]’进行比对。不过这种方式不可靠,不能正确识别 ES 6 的 class 和异步函数。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20200815A0M03700?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券