iOS Javascript引擎parseFloat(1)返回负数

 用户qqpgrvet8m 发布于 2023-01-20 13:39

此代码将显示错误:

function causeBug(d) {
  var k;
  var n = parseFloat(1);
  var c = Math.abs(d);
  if (n < 0) {
    k = '-';
  } else {
    k = '+';
  }
  return k + n; 
}

$(function() {
  for (var i = 0; i <= 2000; ++i) {
      $('body').append(i + ': ' + causeBug(2) + '
'); } });

它在这个小提琴中可见:http://jsfiddle.net/H2SEN/16/(在Mobile Safari中查看,向下滚动,在某些时候你会看到parseFloat(1)<0).从第73次迭代到超过1500次,任何地方都发现了负面消息.

注意一些看似不必要的代码,例如未使用的参数d和未使用的变量var c = Math.abs(d);实际上是发生错误所必需的.对于在return语句中使用n和parseFloat调用(尽管parseInt也会导致它)也是如此.

Bug仅在真正的iPhone 4s(7.0.6)和两个iPod Touch(7.1 beta)上再现.不在iPad或iOS模拟器或任何桌面浏览器中.如果启用了远程调试并在计算机上打开了Safari控制台,则不会出现此错误.

我相信这是这个悬而未决的问题的确切原因:移动Safari iOS 6上的奇怪的JavaScript行为

任何洞察这个错误的潜在原因将不胜感激.

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有