检测是否加载了Underscore.js

时间:2014-10-11 01:00:07

标签: javascript

这是一个临界问题,但我认为值得一提。以下是检查underscore.js是否已加载的最简洁方法,并且是否有任何回溯方法。

typeof _  == "function" ? console.log('yes') : console.log('no');

老实说,我的“真实”问题如下。基本上这是一个将在很多前端框架上使用的插件。有些人会有underscore而有些则不会。为了使其具有通用性并使用underscore提供的方法,我想检查underscore并在我选择使用它时提供后备(如果不存在)。

这是不好的做法吗?我不应该在它存在时使用下划线吗?

注意:不幸的是lodash.js不是一个选项,因为我愚蠢地将underscore.js调整到require配置中,而人们似乎并不理解其必要性AMD兼容模块

2 个答案:

答案 0 :(得分:9)

鉴于Underscore是作为函数导出的,所以说执行类型检查是检查内存中Underscore是否可用的最简洁方法是正确的。 如果我做对了 - 出于一些奇怪的原因,我得说 - 你要实现一个功能检查,这样没有特定方法实现的上下文会优雅地降级。

您只需检查下划线和所需的功能即可。由于每个特征都是Underscore的属性,因此您可以通过类型检查来检查它是否已定义:

if(typeof _ === 'function') {
  if(typeof _.reduce !== 'undefined') {
    // fallback goes here
  }
}

请记住,根据您尝试回退的功能,您可能会失去Underscore的链接功能。我会仔细检查一下。

答案 1 :(得分:2)

我还想测试Lodash是否已加载,这段代码适用于 Lodash 下划线

var obj = {
    eins: false,
    zwei: false,
    drei: false,
};

var id = setInterval(function() {
    for(var key in obj) {
        if(obj[key] === false) return;
    }
    // No property was false
    clearInterval(id);
    // do anything you want here
}, 1000);

https://jsfiddle.net/2x0g8xyt/