Safari中的奇怪的JavaScript错误(?)

时间:2011-01-03 10:05:17

标签: javascript safari

我看到这段代码出错:

$('#foo').text(({rnd:((Math.random())>>0)}).rnd)

(Live copy)

Safari 5.0 (5533.16)中,该非常具体的示例显示了一个浮点数。我测试的每个其他浏览器都显示零(0)。

我的两个问题是:

  1. 您可以在任何版本的safari中测试这个,并告诉我它是否显示零或随机数。
  2. 任何人都知道可能导致这种情况的原因是什么?
  3. 我的想法是>>被某种方式解释为(>)>0而不是右移。

1 个答案:

答案 0 :(得分:2)

  

我的想法是>>被某种方式解释为(>)> 0而不是右移。

不,如果它像这样标记它,它会看到语法错误,你根本不会得到任何东西。 (还有许多其他事情会破坏;标记器 对操作员贪婪。)

更有可能是错误的优化(现在已经修复),将>> 0视为无操作。我必须仔细检查the spec(第11.7.2节[“签名右移操作员(>>)”],第5版第76页)以提醒自己为什么它出现0而不是Math.random()的直接结果。关键是,当然:

  

结果是带符号的32位整数。

谈谈你的边缘案件......