Я пробовал какой-то простой JS-код. Я знал, что мы должны использовать ключевое слово var
, чтобы объявить переменную цикла внутри цикла: for
цикл, чтобы избежать объявления глобальной переменной. Однако я понял, что переменная цикла существует после выполнения цикла тоже:JS loop variable scope
var a = [1, 2, 3, 4, 5, 6];
for (var i = 0; i < a.length; i++)
document.write(a[i]); //123456
document.write(i); //6
Это не инлайн (на самом деле это не нужно быть, я знаю), с тем, как переменная цикла из for
цикла в объектно-ориентированных концепции ведут себя. Я знаю, что я не должен пытаться сравнивать JavaScript с языком OO для любого аспекта. Однако я просто предполагаю, что поведение на языках OO лучше.
Я думаю, если мы поместим этот код непосредственно в тег <script>
, то он фактически добавит переменную цикла в глобальную область, которая не нужна. Это так? или я думаю, что это неправильно?
Мы можем добиться такого поведения, создавая явную функцию сферы:
var a1 = [1, 2, 3, 4, 5, 6];
(function() {
for (var i1 = 0; i1 < a.length; i1++)
document.write(a[i1]); //123456
})();
document.write(i1); //undefined
Но это стандартный способ/а затем в производстве? Что еще можно сделать?
Что делать для циклов (и их видимого поведения), связанных с ООП? – Bergi
@Bergi umm Я думаю, когда мы пишем 'for (int i = 0; i
Mahesha999
JavaScript (и многие другие языки) не имеет области действия блока. И это не имеет никакого отношения к тому, соответствует ли язык некоторым принципам ООП или нет. – Bergi