通过全新方式在 Apple 支持社区中投票!

你现在可以根据回复和用户使用技巧是否有用,来投出赞同票或反对票。进一步了解 <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 开始畅游其中吧!