2016-11-10 4 views
1

Вот мой код для циклаЯ путаюсь с javascript let и var in for loop?

var username = ['Sam', 'Adarsh', 'Rohit', 'Rajat']; 
for(var i in username){ 
    console.log(username[i]); 
} 

это outputing так же, как это необходимо, но я не знаю, почему Пусть требуется декларация. Я понимаю концепцию VAR и LET, но не уверен, в каких случаях var создает проблему для циклов?

Любое тело, пожалуйста, помогите мне понять концепцию. Я новичок и пытаюсь выяснить :)

Спасибо за помощь.

+0

Проблема с этим кодом не с 'var', это связано с тем, что вы используете цикл' for..in' для итерации по массиву [это плохая идея] (Http://stackoverflow.com/q/500504/5743988). – 4castle

+0

Я просто хочу знать роль let и var в любом для цикла ... Можете ли вы привести мне пример? –

+0

Не используйте ни один из них, и переходите к 'Array.forEach' – adeneo

ответ

4

При использовании var:

var username = ['Sam', 'Adarsh', 'Rohit', 'Rajat']; 
for(var i in username){ 
    console.log(username[i]); 
} 
i // 3 

При использовании let

var username = ['Sam', 'Adarsh', 'Rohit', 'Rajat']; 
for(let i in username){ 
    console.log(username[i]); 
} 
i // Uncaught ReferenceError: i is not defined 

let в ES6 создаст блок рамки для области видимости функции

+0

'let' создать область блока в' for (in) {} ', поэтому вне цикла' for (in) {} 'вы не можете получить значение' i'. – TomIsion

+0

На самом деле я изучаю «Проблема с var in for loops» ... с функцией закрытия ..., которая заканчивается let - Можете ли вы, пожалуйста, помочь мне в этой теме .. Заранее спасибо –

+0

@RajatSharma главное ** закрывает ** не 'for in'.http: //stackoverflow.com/questions/111102/how-do-javascript-closures-work? rq = 1 этот ответ ясно говорит мне: что такое закрытие. – TomIsion