想让人注意到某个有用的答案?请投赞同票!

有没有人帮助到了你?有没有任何答案或用户使用技巧解决了你的问题?选择“赞同票”箭头投出你的赞同票。你的反馈能帮助到他人!

进一步了解在什么情况下投赞同票:了解投票 - Apple 社区

看上去一段时间内没有人回复。 要再次发起对话,只需提出一个新问题即可。

Safari 的 JS 引擎在执行优化上导致数组没有初始化。

找不到 Safari for IOS 的区,借地提问,在 IOS 上的 chrome 浏览器和 safari 浏览器中,使用 [] 创建的数组,有可能因为优化导致数组没有初始化。

测试机器的配置:

Iphone 7, Iphone XS

IOS 12.1

重现代码如下:


function doFrame() { var count = 10000; while (count--) { mobileIOSChromeBug(); mobileIOSSafariBug(); } requestAnimationFrame(doFrame); } function mobileIOSChromeBug() { var one = Math.random() < 0.5 ? [1, 2] : undefined; var two = Math.random() < 0.5 ? [1, 2] : undefined; var array = [0, 0, 0, 0]; if (one) { array[0] = one[0]; array[1] = one[1]; } if (two) { array[2] = two[0]; array[3] = two[1]; } else if (array[2] !== 0) { alert('chrome error:' + array.join(',')); } } function mobileIOSSafariBug() { var array = [0, 0, 0]; if (Math.random() < 0.5) { array[0] = 1; array[1] = 1; } if (Math.random() < 0.5) { array[2] = 3; } else if (array[2] !== 0) { alert('safari error:' + array.join(',')); } } setTimeout(doFrame, 10);


[经过版主编辑]

发布日期 2018年12月5日 上午10:24

回复
回复量: 2

Safari 的 JS 引擎在执行优化上导致数组没有初始化。

欢迎来到 Apple 支持社区
Apple 客户在其产品方面互相帮助的论坛。使用你的 Apple ID 开始畅游其中吧!