Циклы for...of не поддерживаются?

День добрый!

Вопрос - в subj.

Воспроизведение:

var iterable = 'boo';

for (var value of iterable) {
  log(value);
};

Ожидается:
b
o
o

Имеем:
WARNING: warning: failed to load /etc/wb-rules/testForOf.js: SyntaxError: parse error (line 3)
duk_js_compiler.c:433

Добрый день!

Да, не поддерживается.

У нас используется ecmascript 5.1, а for… of появилось в ecmascript 6.

1 лайк

А почему строка должна итерироваться? Я бы понял такое утверждение если взять явно представленный массивом байт string из С - и то, в зависимости от компилятора.
Явно перебираются только объекты и словари. Остальное - в зависимости от внутреннего представления.

//01_02_test_01.js
function test(buffer) {
  for (var key in buffer) {
    log.info(key, buffer[key]);
  }
};
var TestObj = [1,2,3];
test(TestObj);

Это ответ.

а рассуждения о том зачем мне итерироваться по строке - в топку!

О, как!

Это был пример из учебника ecmascript.

возможно, я Вас удивлю, но строка итерируется. Подобно массиву.
и даже в WB

такой код

var str = 'test';
for(var i = 0; i < str.length; i++) log(str[i]);

предсказуемо работает (ровно так, как я ожидал в примере из первого сообщения)

Но речь была не о том.
Хорошо, что хоть кто-то понял о чем я говорю и дал внятный РЕЛЕВАНТНЫЙ ответ.

Кстати, галочку “Вопрос решен” я переставил с Вашего сообщения, на вот это Циклы for...of не поддерживаются? - #3 от пользователя Bringer

Нет. Вы показываете цикл от 0 до длины массива (строки), с выборкой элемента массива по номеру. Это не итерация.

Ок. Считайте как хотите.

я предпочитаю верить доверенным источникам

Строка - итерируемый объект. И, вроде как, вне зависимости от реализаций.

Но, еще раз - обсуждение итерируемости строки НЕ РЕЛЕВАНТНО вопросу и не имеет смысловой ценности в данном контексте.

Не все с Вами согласны. for вполне себе итерирующая конструкция
https://262.ecma-international.org/5.1/#sec-12.6