Javascript typeof Typeahead返回未定义的

Javascript typeof Typeahead返回未定义的,javascript,twitter-bootstrap-3,typeof,Javascript,Twitter Bootstrap 3,Typeof,在我的脚本中调用Typeahead之前,我正在加载引导Typeahead插件,但是typeof Typeahead返回未定义的,即使它是绝对加载的 Javascript文件第2650行: !function($){"use strict";var Typeahead=function(element,options) // ... rest of plugin Javascript文件行2765: alert(typeof Typeahead); 警报未定义 为什么会出现这种情况?您没有向我

在我的脚本中调用Typeahead之前,我正在加载引导Typeahead插件,但是typeof Typeahead返回未定义的,即使它是绝对加载的

Javascript文件第2650行:

!function($){"use strict";var Typeahead=function(element,options) // ... rest of plugin
Javascript文件行2765:

alert(typeof Typeahead);
警报未定义


为什么会出现这种情况?

您没有向我们展示足够的代码。但是,如果:

alert(typeof Typeahead);
在出现
var Typeahead=function(){…}
的功能块之外,则您在定义该变量(以及函数)的范围之外,因此该变量将
未定义。变量仅在定义它们的范围内可见

如果希望
var Typeahead
在该功能块之外可用,则必须在更高的范围内声明它

例如:

function foo() {
   // define local variable only visible within function foo
   var greeting = "Hi";
}

console.log(typeof greeting);   // will show "undefined"


因为
Typeahead
是另一个函数中的私有变量…Typeahead加载在全局范围中,而alert(typeof Typeahead)加载在$(document).ready(function(){})中@VinceKronlein-您的代码显示
Typeahead
正在
中定义!函数($){…}()
function。这不是全球范围。这在函数范围内。如果您需要更详细的帮助,您将显示足够多的代码,以显示两个相关代码段的整个范围,因为这个问题完全是关于范围的,但是您已经缩写了您的代码,因此除了函数中定义了
Typeahead
之外,我们很难确切知道什么是什么。
// define higher scope variable visible in foo and outside of foo
var greeting = "Hi";

function foo() {
    console.log(greeting);      // will show "Hi"
}

console.log(greeting);          // will show "Hi"