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