2013-08-27 2 views
1

Я использую YUI3 TabView component в следующем формате:JavaScript YUI3 глобальной переменной

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

Однако, когда я пытаюсь получить доступ к переменной tabview вне его функции декларации, я получаю исключение, что объект не определен. Можете ли вы любезно сказать мне, что я пропустил, пожалуйста?

ответ

1

Edit: Также проверьте JavaScript YUI3 using global variables?

Учитывая асинхронный характер JavaScript, в tabview не обязательно оказывается перед тем alert() называется на нем вне блока YUI. В этом случае «неопределенный» в поле предупреждения означает, что переменная была объявлена, но не назначена ни одному значению. Если переменная недоступна, alert() потерпит неудачу из-за неотображенного «ReferenceError».

Так, пытаясь угадывать свое намерение, если вы хотите, чтобы исследовать объект TabView, вы можете захотеть использовать console.log() вместо alert() видеть вывод в консоли браузеров, и поместить его в блок YUI сразу после render() :

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

    console.log(tabview); 
}); 

для того, чтобы использовать tabview вне блока YUI, гарантировать, что он будет готов. В качестве быстрого примера:

Y.on("domready", function() { 
    console.log(tabview); 
} 
Смежные вопросы