2014-12-09 2 views
13

Я хочу знать, как поддерживается for(item of array) с точки зрения поддержки браузера, поддержка мобильных JavaScript - я понимаю, вы не можете сделать greater than >, и это чистая итерация?Насколько хорошо поддерживается оператор `for of` JavaScript?

Я только что обнаружил это, это так хорошо, как я надеюсь?

+2

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for...of#Browser_compatibility – Bergi

+2

http://kangax.github.io/compat-table/es6 /#for..of_loops – kangax

+0

Голосование закрывается слишком широко. –

ответ

8

Классический способ сделать это состоит в следующем:

for(var i = 0; i < nameArray.length; i++){ 
    var str = nameArray[i]; 
    } 

Это даст вам точную функциональность «Еогеасп» цикла, который я подозреваю, что вы на самом деле после того, как здесь. Это также дает вам дополнительную выгоду от работы в Internet Explorer.

Существует также обширное знание точной петли, описанной в MDN. В это время Android-сеть и, похоже, не все поддерживают ваш метод, поэтому проверьте список совместимости на этой странице; представляется будущим выпуском нового JavaScript, который, вероятно, будет содержать ООП.

+4

Я не понимаю, что «ООП» имеет к этому отношение. –

+0

Ну, петли foreach в моем сознании больше являются свойством языков OO. Кроме того, это показывает, какая версия упомянута, я ценю вклад. – Gianthra

+6

Высказывание «для каждой петли есть ... свойство языков OO» серьезно дезинформировано. –

-6

Это не так.

Даже если бы это было так, было бы неуместно использовать его в массиве.

Для массивов вы всегда должны использовать обычный цикл for.

Вы можете, однако, оживить его немного:

for(var i=0, l=nameArray.length, str=nameArray[0]; 
    i<l; 
    i++,str=nameArray[i]) { 
    console.log(str.name); 
} 
+4

??Я думаю, что конструкция ES6 'for ... of' явно знает массивы и выполняет только итерации через свойства с числовыми именами. – Pointy

+3

'for of' выполняет итерацию любой итеративной структуры, особенно массивов и итераторов. Я не понимаю, как это использование будет неуместным? – Bergi

+0

Не уверен, что это произошло здесь, но не путайте 'for ... of' с' for ... in' - см. Ответ ниже. –

3

Это петля ES6 for..of. Согласно статье MDN, которую я только что связал, она поддерживается несколькими браузерами (см. Там для точных версий), но не IE. В настоящее время несколько мобильных браузеров также поддерживают его.

7

MDN:

В то время как для ... в итерации по именам свойств, для ... из итерации по стоимости недвижимости.

Вышеупомянутое то, что for...of цикл делает. Ниже приведен его текущий статус.

Это экспериментальная технология, часть предложения Harmony (ECMAScript 6) . Поскольку эта технология не стабилизировалась, проверьте таблицу compatibility для использования в различных браузерах. Также отметьте , что синтаксис и поведение экспериментальной технологии подчиняются для изменения в будущей версии браузеров по мере изменения спецификации.

2

В то же время, вы могли бы использовать что-то вроде этого:

for(element_idx in elements) { 
    element = elements[element_idx]; 
    ... 
} 

for...in has been standard since ECMAScript 1st Edition.

+3

«Хотя это может быть заманчиво использовать это как способ итерации над элементами Array, оператор for ... in будет возвращать имя ваших пользовательских свойств в дополнение к числовым индексам. Таким образом, лучше использовать традиционный для цикла с числовым индексом при итерации по массивам, потому что оператор for ... inerates над пользовательскими свойствами в дополнение к элементам массива, если вы изменяете объект Array, например добавление пользовательские свойства или методы. ' [MDN - для ... in/array] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Loops_and_iteration#Arrays) – viery365

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