2014-11-23 2 views
0

В настоящее время я изучаю основы циклов «while» и «for» в JS. В цикле while ниже я пытаюсь распечатать каждую отдельную букву имени переменной, однако первая буква строки печатает неопределенные, а оставшиеся буквы печатаются правильно. Любая помощь в понимании этого очень ценится.JavaScript Хотя цикл возвращает «undefined» для первой буквы в массиве

var name = "Hello World!"; 
    var i = []; 
    while (i < name.length) { 
     console.log (name[i]); 
     i ++; 
    } 

    for (var j = 0; j < name.length; j++) { 
     console.log(name); 
    } 

Результаты:

undefined 
e 
l 
l 
o 

W 
o 
r 
l 
d 
! 
Hello World! 
Hello World! 
Hello World! 
Hello World! 
Hello World! 
Hello World! 
Hello World! 
Hello World! 
Hello World! 
Hello World! 
Hello World! 
Hello World! 
+0

Почему вы инициализируете 'i' пустым' [] 'массивом вместо' 0'? Когда вы делаете 'name [i]', вы в основном выполняете 'name [" "]', что было бы 'undefined'. Затем приращение изменяет значение '' '' '' '' '', потому что '' '' '' 'принудительно заполняет пустой массив до числа' 0'. –

+0

Если честно ... Я понятия не имею, почему я так сделал. Думаю, теперь я понимаю. Итак, если он равен пусту, то заменяет первую букву и пустой слот правильно? – ataleb52

+0

Вид. Все свойства объекта в JavaScript являются строками, поэтому, когда вы делаете o'name [i] ', он принимает любое значение' i' и преобразует его в строку. Для пустого массива он преобразуется в пустую строку. Пустая строка является допустимым свойством, но, безусловно, не будет иметь значения. Таким образом, он в основном извлекает свойство, которого не существует. –

ответ

1

Пожалуйста Initialize "я" до нуля, прежде чем во время цикла.

var name = "Hello World!"; 
var i = 0; 
while (i < name.length) { 
    console.log (name[i]); 
    i ++; 
} 

for (var j = 0; j < name.length; j++) { 
    console.log(name); 
} 
Смежные вопросы