День добрый!
Вопрос - в 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 лайк
krglv_pn:
var iterable = 'boo';
А почему строка должна итерироваться? Я бы понял такое утверждение если взять явно представленный массивом байт 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