Мы все знаем, что глобальные переменные не являются лучшей практикой. Но есть несколько случаев, когда с ними сложно кодировать. Какие методы вы используете, чтобы избежать использования глобальных переменных?
Например, учитывая следующий сценарий, как бы вы не использовали глобальную переменную?
Код 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">
. Он загружает файлы по одному для предотвращения огромных запросов. Он делает это с помощью POST в iframe, ожидая ответа, который запускает iframe onload, а затем запускает следующую отправку.
Вам не обязательно отвечать на этот пример, я просто предоставляю его для ссылки на ситуацию, в которой я не могу думать о способе избежать глобальных переменных.