我无法理解为什么以下代码无效。
var test=null;
(function(){
var Class=...
test=new Class();
})();
test.doSomething();// ERROR test is null
据我所知,如果我不使用var声明变量,则必须在当前范围(函数)之外找到变量。请说出我做错了什么。
修改
完整代码:
var Application=null;
require(["Aqua","$"],function(Aqua,$){
var Class = Aqua.Application.extend();
Application = new Class();
});
Application.do("aaa");//Application is null
但以下工作
var Application=null;
require(["Aqua","$"],function(Aqua,$){
var Class = Aqua.Application.extend();
Application = new Class();
Application.do("aaa");
});
答案 0 :(得分:2)
Require是一个异步依赖库,因此底线Application.do("aaa");
不在回调中。在使用Application = new Class();
部分的require.js回调运行之前调用该底线。
出于这个原因,你已经在最底层的例子中解决了它。
答案 1 :(得分:0)
也许你在省略的部分做错了什么?
这对我来说很好用:
var test=null;
(function () {
var Class = function () {
this.doSomething = function () { console.log('hey'); }
};
test = new Class();
})();
test.doSomething();// prints hey
请注意,您需要添加this
,因为它是一个类,而您正在使用new