外部变量和jQuery函数内的作用域

时间:2013-11-06 22:49:17

标签: javascript jquery html

我在下面有这个代码,每次调整窗口大小时都应该运行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 内调用它的解决方法?

2 个答案:

答案 0 :(得分:1)

你可能想这样做:

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

而不是:

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

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

第二个表单将在现场调用该函数,并且因为它没有return语句,所以它将返回undefined,因此test将是未定义的。

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

答案 1 :(得分:1)

以下应该可以做到这一点,虽然它并不比在声明之后立即调用函数更方便:

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

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