Как избежать глобальных переменных в JavaScript?

Мы все это знаемглобальные переменные что-нибудь, но лучшая практика. Но есть несколько случаев, когда трудно без них писать код. Какие методы вы используете, чтобы избежать использования глобальных переменных?

Например, учитывая следующий сценарий, как бы вы не использовали глобальную переменную?

Код JavaScript:

var uploadCount = 0;

window.onload = function() {
    var frm = document.forms[0];

    frm.target = "postMe";
    frm.onsubmit = function() {
        startUpload();
        return false;
    }
}

function startUpload() {
    var fil = document.getElementById("FileUpload" + uploadCount);

    if (!fil || fil.value.length == 0) {
        alert("Finished!");
        document.forms[0].reset();
        return;
    }

    disableAllFileInputs();
    fil.disabled = false;
    alert("Uploading file " + uploadCount);
    document.forms[0].submit();
}

Соответствующая разметка:

<iframe src="test.htm" name="postHere" id="postHere"
  onload="uploadCount++; if(uploadCount > 1) startUpload();"></iframe>

<!-- MUST use inline JavaScript here for onload event
     to fire after each form submission. -->

Этот код взят из веб-формы с несколькими<input type="file">, Он загружает файлы по одному, чтобы предотвратить огромные запросы. Это делает этоПОЧТАв iframe, ожидая ответа, который запускает нагрузку iframe, а затем запускает следующую отправку.

Вам не нужно конкретно отвечать на этот пример, я просто предоставляю его для ссылки на ситуацию, в которой я не могу придумать, как избежать глобальных переменных.

Ответы на вопрос(10)

Ваш ответ на вопрос