Массив Javascript всегда возвращает пустой массив в бета-версии iOS9

У меня есть очень странная проблема, возникающая в iOS9 beta 5 - массивы кажутся пустыми, даже когда элементы были добавлены.

Звучит безумно, но вот как это выглядит в Safari iOS9 — это только на домашней странице Google, без плагинов — просто ванильный вебкит/javascript:

введите здесь описание изображения

В то время как на рабочем столе Safari я вижу правильное поведение:

введите здесь описание изображения

У кого-нибудь еще есть эта проблема?

Вот код для воспроизведения:

myArray = ['cat', 'dog', 'fish']  
console.log(myArray.length)  
console.log(myArray)  
console.log(myArray.slice(0,1))  
console.log(myArray.indexOf('fish')) 

Спасибо!


person Stephen Bartholomew    schedule 26.08.2015    source источник
comment
Так проблема в массиве или в консоли?   -  person RobG    schedule 26.08.2015
comment
что вы получаете с myArray.join('') ?   -  person Tom    schedule 26.08.2015
comment
@RobG это может быть консолью, но единственная причина, по которой я проверил, - это ошибка в приложении, которая могла быть вызвана таким поведением.   -  person Stephen Bartholomew    schedule 26.08.2015
comment
@ Том, а, он действительно возвращает правильные элементы ...   -  person Stephen Bartholomew    schedule 26.08.2015
comment
@StephenBartholomew - нет спецификации того, что должна делать консоль, но, конечно, то, что она делает, не очень полезно. :-/   -  person RobG    schedule 26.08.2015


Ответы (3)


Похоже, это вызвано реализацией toString, которую вызывает console.log, а не пустым массивом.

person Tom    schedule 26.08.2015
comment
Это, безусловно, кажется наиболее вероятным — это должно быть отвлекающий маневр, который также прекрасно объясняет ошибку, которую я вижу. Я буду считать это правильным и продолжу поиски - если бы массивы действительно вели себя так, я думаю, я бы увидел гораздо больше проблем! - person Stephen Bartholomew; 26.08.2015

Похоже, вы используете Safari 8 для проверки iOS 9. Вы должны использовать Safari 9 или более позднюю версию для проверки iOS 9. Safari 9 доступен на El Capitan, Yosemite и Mavericks.

Вы также можете использовать WebKit Nightly на Yosemite и Mavericks, чтобы получить одинаковое поведение.

person JoePeck    schedule 14.10.2015

Проблема с консолью. Вы можете увидеть значение для отладки с помощью предупреждения, если вам нужно.

например: alert(['cat', 'dog']). Он выдаст нужный вам результат.

У меня была похожая проблема, когда я использовал метод replaceAll. Он не поддерживается в ios/safari 12. Если вы столкнулись с этим, вероятно, у вас могут возникнуть проблемы с некоторыми функциями, такими как replaceAll. В моем случае мне пришлось использовать polyfill.

person HenriqueMD    schedule 11.05.2021