0

我在下面有这段代码,它应该在test()每次调整窗口大小时运行。

var i = 0;
var test = (function() {
    console.log(i++);
})();

$(window).resize(function() {
    test();
});

代码:http: //jsfiddle.net/qhoc/NEUdA/

但是,我得到了Uncaught TypeError: undefined is not a function因为test()在调整大小中不可用。

有人可以帮忙解释为什么吗?拥有(1)自动执行功能(2)能够在其中调用它resize的解决方法是什么?

4

2 回答 2

1

你可能想要这样做:

var test = function() {
    console.log(i++);
};

而不是这个:

var test = (function() {
    console.log(i++);
})();

更新小提琴:http: //jsfiddle.net/NEUdA/1/

第二种形式会当场调用函数,因为没有return语句,所以会返回undefined,所以test是undefined。

为什么要让测试自动执行?

于 2013-11-06T22:50:13.637 回答
1

以下应该可以解决问题,尽管它实际上并不比在声明后立即调用函数更方便:

var i = 0;
var test = (function test() {
    console.log(i++);
    return test;
})();

$(window).resize(function() {
    test();
});
于 2013-11-06T23:02:12.000 回答