【问题标题】:Javascript array always returns empty array in iOS9 betaJavascript 数组在 iOS9 beta 中总是返回空数组
【发布时间】:2015-11-20 12:03:16
【问题描述】:

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

听起来很疯狂,但这就是它在 Safari iOS9 中的样子——这只是在谷歌主页上,没有插件——只是香草 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')) 

谢谢!

【问题讨论】:

  • 那么是阵列的问题还是控制台的问题?
  • myArray.join('') 有什么用?
  • @RobG 它可能是控制台 - 但我检查的唯一原因是由于此行为可能导致应用程序中的错误。
  • @Tom 啊——它确实返回了正确的元素......
  • @StephenBartholomew - 没有关于控制台应该做什么的规范,但肯定它似乎在做什么并不是很有帮助。 :-/

标签: javascript mobile-safari ios9


【解决方案1】:

您似乎正在使用 Safari 8 来检查 iOS 9。您应该使用 Safari 9 或更高版本来检查 iOS 9。Safari 9 在 El Capitan、Yosemite 和 Mavericks 上可用。

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 这当然看起来最有可能 - 它一定是一个红鲱鱼,它也完美地解释了我看到的错误。我会认为这是正确的并继续寻找 - 如果数组真的像这样我想我会看到更多的问题!
    【解决方案3】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2019-12-02
      • 2020-09-03
      • 1970-01-01
      • 1970-01-01
      • 2021-12-10
      • 2021-09-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多