Javascript 外部变量和jQuery函数内部的作用域
我有下面的代码,它应该在每次调整窗口大小时运行Javascript 外部变量和jQuery函数内部的作用域,javascript,jquery,html,Javascript,Jquery,Html,我有下面的代码,它应该在每次调整窗口大小时运行test() var i = 0; var test = (function() { console.log(i++); })(); $(window).resize(function() { test(); }); 代码: 但是,我得到了uncaughttypeerror:undefined不是一个函数,因为test()在resize中不可用 有人能解释一下原因吗?拥有(1)自动执行功能,(2)能够在resize中调用它的解决方
test()
var i = 0;
var test = (function() {
console.log(i++);
})();
$(window).resize(function() {
test();
});
代码:
但是,我得到了uncaughttypeerror:undefined不是一个函数,因为test()
在resize中不可用
有人能解释一下原因吗?拥有(1)自动执行功能,(2)能够在resize
中调用它的解决方法是什么?您可能想这样做:
var test = function() {
console.log(i++);
};
与此相反:
var test = (function() {
console.log(i++);
})();
更新小提琴:
第二个表单将当场调用函数,因为它没有return语句,它将返回undefined,所以test将是undefined
为什么您希望测试是自动执行的?下面应该可以做到这一点,尽管它实际上并不比仅在声明之后调用函数更方便:
var i = 0;
var test = (function test() {
console.log(i++);
return test;
})();
$(window).resize(function() {
test();
});
自动执行是初始化该函数所必需的一种方式。我可以做test()代码>之后立即执行,但看起来不清晰如果确实必须执行该函数,请从中返回另一个将分配给测试变量的函数。返回的函数将在window.resize上被调用。更好的做法是,执行类似于模块模式的操作,并将resize时需要调用的函数添加到变量中<代码>测试
在调整大小
中可用,只是您将其设置为“未定义”。@Kevin但为什么它也不执行?您当前应该在控制台中获得1个日志,然后出现错误。