JavaScript YUI3全局变量

时间:2013-08-27 09:12:20

标签: javascript yui3

我使用以下格式的YUI3 TabView component

var tabview;
YUI().use('tabview', function(Y) {
    tabview = new Y.TabView({srcNode:'#demo'});
    alert (tabview); //defined
    tabview.render();
});
alert (tabview); //undefined

但是,当我尝试在其声明函数之外访问变量tabview时,我得到一个异常,即该对象未定义。你能告诉我我错过了什么吗?

1 个答案:

答案 0 :(得分:1)

修改:同时选中JavaScript YUI3 using global variables?

考虑到javascript的异步性质,tabview不一定在YUI块之外调用alert()之前呈现。在这种情况下,在警告框中看到“未定义”意味着该变量已被声明但未分配给任何值。如果无法访问该变量,alert()将因未被捕获的“ReferenceError”而失败。

因此,在尝试猜测您的意图时,如果要检查tabview对象,可能需要使用console.log()而不是alert()来查看浏览器控制台中的输出,并将其放入在render()之后的YUI块内:

var tabview;
YUI().use('tabview', function(Y) {
    tabview = new Y.TabView({srcNode:'#demo'});
    console.log(tabview); //defined
    tabview.render();

    console.log(tabview);
});

为了在YUI块之外使用tabview,请确保它已准备就绪。作为一个简单的例子:

Y.on("domready", function() {
    console.log(tabview);
}