Javascript 数组在 iOS9 beta 中总是 returns 空数组

Javascript array always returns empty array in iOS9 beta

我在 iOS9 beta 5 中遇到了一个非常奇怪的问题 - 即使添加了元素,数组似乎还是空的。

听起来很疯狂,但这是它在 Safari 中的样子 iOS9 - 这只是在 google 主页上,没有插件 - 只是香草 webkit/javascript:

而在 Safari 桌面上,我看到了正确的行为:

还有其他人遇到这个问题吗?

这是要重现的代码:

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

谢谢!

这似乎是由 toString 的实现引起的,console.log 正在调用,而不是空数组。

看起来您正在使用 Safari 8 检查 iOS 9. 您应该使用 Safari 9 或更高版本来检查 iOS 9. Safari 9 在 El Capitan 上可用,Yosemite,和小牛队。

您也可以在 Yosemite 和 Mavericks 上使用 WebKit Nightly 以获得相同的行为。

问题出在控制台上。 如果需要,您可以使用警报查看要调试的值。

例如:alert(['cat', 'dog'])。它会弹出你需要的结果。

我在使用 replaceAll 方法时遇到了类似的问题。它在 ios/safari 12 中不支持。如果您遇到此问题,您可能会遇到一些功能问题,例如 replaceAll。对于我的情况,我不得不使用 polyfill.