Javascript 检测是否加载了下划线.js

Javascript 检测是否加载了下划线.js,javascript,Javascript,这是一个边缘问题,但我觉得值得一问。下面是检查是否加载的最简洁的方法,并且这种方法有任何缺点 typeof _ == "function" ? console.log('yes') : console.log('no'); 老实说,我的“真正”问题如下。基本上,这是一个插件,将在许多前端框架上使用。有些会有下划线,有些则不会。为了使其具有通用性,并使用由下划线提供的方法,我想检查下划线,并在选择在可能的情况下使用它时提供回退(如果不存在) 这是一种糟糕的做法吗?当下划线出现时,我甚至不应该麻

这是一个边缘问题,但我觉得值得一问。下面是检查是否加载的最简洁的方法,并且这种方法有任何缺点

typeof _  == "function" ? console.log('yes') : console.log('no');
老实说,我的“真正”问题如下。基本上,这是一个插件,将在许多前端框架上使用。有些会有
下划线
,有些则不会。为了使其具有通用性,并使用由
下划线提供的方法,我想检查
下划线
,并在选择在可能的情况下使用它时提供回退(如果不存在)

这是一种糟糕的做法吗?当下划线出现时,我甚至不应该麻烦使用下划线吗


注意:不幸的是
lodash.js
不是一个选项,因为我愚蠢地将
下划线.js
填充到
require
配置中,人们似乎不理解AMD兼容模块的必要性

鉴于下划线是作为函数导出的,可以正确地说,执行类型检查是检查内存中是否有下划线的最简洁的方法。 如果我没弄错的话——出于某种奇怪的原因,我得说——你想要实现一个特性检查,这样没有特定方法实现的上下文就会优雅地降级

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

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

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

我还想测试Lodash是否已加载,这段代码对Lodash下划线都有效:

(function () {
    if (_.VERSION) {
    console.log('underscore loaded');
  }
})();

好吧,所有的测试都告诉您,
\u
是一个函数,而不管它是否是下划线.js。您不应该费心。使下划线成为项目的依赖项并使用它,或不使用,或不使用。你不能两全其美;这样做毫无益处。下划线缩小的效果很小。只需加载它就不需要花费任何成本。环境会有所不同,使用它的方法时,与标准JavaScript相比,内存会有很大的提高,因为我处理的是带有嵌套对象的非常大的数组(数百万)。@meagar我不确定您是否理解。它不是一个项目,它是其他项目的插件,这些项目可能使用或可能不使用composer之类的东西。检查有一个好处。就像一个插件想要加载下划线,即使另一个插件可能已经加载了下划线。同样的事情也适用于Fontawesome、Bootstrap等。为了插件的健全性,在我看来你应该经常检查。是的,在阅读了评论之后,我想我还需要检查函数中存在的方法。谢谢你。