视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
web开发中怎样检测函数
2020-11-27 19:41:26 责编:小采
文档


这次给大家带来web开发中怎样检测函数,web开发中检测函数的注意事项有哪些,下面就是实战案例,一起来看一下。

从技术上讲,JS中的函数是引用类型,同样存在Function构造函数,每个函数都是其实例,比如:

function myFunc () {}// 不好的写法console.log(myFunc instanceof Function); // true// 好的写法console.log(typeof myFunc === 'function'); // true

然而,这个方法亦不能跨帧(frame)使用,因为每个帧都有各自的Function构造函数。好在typeof运算符也是可以用于函数的,返回"function"。检测函数最好的方法是使用typeof,因为它可以跨帧(frame)使用。

用typeof来检测函数有一个。在IE8和更早版本的IE浏览器中,使用typeof来检测DOM节点(比如document.getElementById())中的函数都返回"object"而不是"function"。比如:

// IE 8及其更早版本的IEconsole.log(typeof document.getElementById); // "object"console.log(typeof document.createElement); // "object"console.log(typeof document.getElementByTagName); // "object"

之所以出现这种怪异的现象是因为浏览器对DOM的实现由差异。简言之,这些早版本的IE并没有将DOM实现为内置的JS方法,导致内置typeof运算符将这些函数识别为对象。因为DOM是有明确定义的,了解到对象成员如果存在则意味着它是一个方法,开发者往往通过in运算符来检测DOM的方法,比如:

// 检测DOM方法if ("querySelectorAll" in document) {
 images = document.querySelectorAll("img");
}

这段代码检查querySelectorAll是否定义在了document中,如果是,则使用这个方法。尽管不是最理想的方法,如果想在IE8及更早浏览器中检测DOM方法是否存在,这是最安全的做法。在其他所有的情形中,typeof运算符是检测JS函数的最佳选择。

相信看了本文案例你已经掌握了方法,更多精彩请关注Gxl网其它相关文章!

推荐阅读:

web开发中怎样检测原始值

web开发中如何避免空比较

下载本文
显示全文
专题