Насколько хорошо поддерживается оператор `for of` JavaScript?
var nameArray = [
{ name: 'john', surname: 'smith' },
{ name: 'paul', surname: 'jones' },
{ name: 'timi', surname: 'abel' },
];
for (str of nameArray) {
console.log( str.name );
}
Я хочу знать, как поддерживается for( item of array )
с точки зрения поддержки браузера, поддержки мобильного JavaScript - я понимаю, что вы не можете сделать greater than >
, и это чистая итерация?
Я только что открыл это, так хорошо, как я надеюсь?
Ответы
Ответ 1
Классический способ сделать это выглядит следующим образом:
for(var i = 0; i < nameArray.length; i++){
var str = nameArray[i];
}
Это даст вам точную функциональность цикла "foreach", который, как я подозреваю, является тем, что вы действительно здесь.
Это также дает вам дополнительную выгоду от работы в Internet Explorer.
Существует также обширное знание точной петли, описанной в
Ответ 2
MDN:
Пока для... в итерациях над именами свойств, для... итераций над значениями свойств.
Выше приведен пример цикла for...of
. Ниже приведен его текущий статус.
Это экспериментальная технология, часть Гармонии (ECMAScript 6) предложение. Поскольку эта спецификация технологии не стабилизировалась, проверьте таблицу compatibility для использования в различных браузерах. Также обратите внимание что синтаксис и поведение экспериментальной технологии подчиняются для изменения в будущей версии браузеров по мере изменения спецификации.
Ответ 3
Это цикл ES6 for..of
. Согласно статье MDN, которую я только что связал, она поддерживается несколькими браузерами (см. Там для точных версий), но не IE. В настоящее время несколько мобильных браузеров также поддерживают его.
Ответ 4
Тем временем вы можете использовать что-то вроде этого:
for(element_idx in elements) {
element = elements[element_idx];
...
}
for...in
был стандартным с ECMAScript 1st Edition.
Ответ 5
Это не так.
Даже если бы это было так, было бы нецелесообразно использовать его в массиве.
Для массивов вы всегда должны использовать традиционный цикл for
.
Вы можете, однако, немного приправить его:
for( var i=0, l=nameArray.length, str=nameArray[0];
i<l;
i++,str=nameArray[i]) {
console.log(str.name);
}