FoxTrix, расскажите - как оно должно работать
var time = 1000;
(function(time){
console.log(time);
})();
практически такой же эффект, что и
var time = 1000;
(function(){
var time;
console.log(time);
})();
>>> indefinded
зачем вы в объекте вызова функции (function(){})(); объявляете time. По сути интерпритатор в цепочке объектов вызова найдет time равный undefined
либо передавайте его так
(function(time){
// ...
})(time);
т.е. когда предполагается, что значение time в дальнейшем будет меняться, но именно тут вам нужно именно первоначальное значение, например:
var time = 1000;
(function(time){
setTimeout(function(){
console.log(time);
},1000);
})(time);
time = 100500;
>>> 1000
и если наоборот
var time = 1000;
(function(){
setTimeout(function(){
console.log(time);
},1000);
})();
time = 100500;
>>> 100500
т.е. смотря что нужно.
setTimeout(function(time) {var intervalID = window.setInterval(correct, time);},700);
что вы делаете?
во первых: function(time) {... опять объявляете time и опять он undefined. Сам же setTimeout не передает вам в ваш колбэк никаких параметров т.е. в вашем случае time , зачем так писать
var intervalID = window.setInterval(correct, time);
вы не меняете значение переменной вы меняете ссылку на объект, но сам объект остается.
пример:
var a = setInterval(function(){ console.log(1); },1000);
a = setInterval(function(){ console.log(2); },1000);
>>>1
>>>2
>>>1
>>>2
...
иными словами в вашем случае при каждом resize у вас новый window.setInterval(correct, time); , при наличии предыдущих
А вообще не очень понятно, что ваш код должен делать, лучше расскажите