2013-12-04 2 views
3

Каковы некоторые из практических примеров использования в циклах JavaScript? Они плохо подходят для массивов, поскольку они игнорируют неопределенные ключи и возвращают числовые свойства объекта массива. Я никогда не видел, чтобы они использовались в любом производственном коде. Задумывались ли разработчики об их усталости?Используется для использования в JavaScript

+1

Используйте их, когда вам нужно перебирать объект, чтобы вести себя как хеш-таблица. Например, когда вы возвращаете JSON из запроса и хотите действовать со всеми свойствами объекта, когда вы не уверены, что именно эти свойства будут именно такими. --- совсем не устарели. –

+1

'for in' для объектов, а не массивов. – SLaks

+0

Ну, да, это не лучший способ обработки массивов, но я считаю это чрезвычайно полезным для объектов. – tewathia

ответ

4

Они лучше всего подходят для итерации по объектам Javascript или JSON, например {"foo":bar,"baz":boo}, но не для массивов, см. Больше here для получения дополнительной информации.

Они лучше всего сделать так:

var obj={"foo":bar,"baz":boo} 
for(var key in obj){ 
    //hasOwnProperty ensures that it exists and bad stuff doesn't happen with deleted properties 
    if(obj.hasOwnProperty(key)){ 
     obj[key].doSomething(); 
    } 
} 

Douglas Крокфорд имеет очень хорошую страницу на этом here. Для массивов они никогда не должны использоваться, но они очень полезны для объектов, особенно если вы не знаете, в каком порядке будут находиться ключи или какие ключи будут там. Для массивов, просто сделать это

for(var i=0;i<array.length;i++){ 
//do some stuff 
} 
1

MDN говорит:

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

Вы также можете проверить Exploring JavaScript for-in loops

var str = "hello!", spreadOut = ""; 

for (var index in str) { 
    (index > 0) && (spreadOut += " ") 
    spreadOut += str[index]; 
} 

spreadOut; //"h e l l o !" 

Вы можете передать этот thread где CMS объяснил это:

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

1

Полезно для итерации объектов, где итерация не зависит от порядка. Это полезно несколькими способами.

Переменная, используемая в инструкции for in, является ключом к текущему значению.

Сокращенная нотация может сохранить несколько символов в файле .js.

Это может быть более читаемым.

Смежные вопросы