Phr*_*ogz 7 javascript safari macos
编辑:更简单的repro案例; 以下代码:
setInterval(function(){
var a=[10,20,30,40], i=-1;
a[-1] = 42;
while (i<10000) a[i++];
console.log(a[-1],a[4294967295]);
},100);
Run Code Online (Sandbox Code Playgroud)
...产生输出:
42 undefined
undefined 42
42 undefined
37x undefined 42
42 undefined
undefined 42
42 undefined
41x undefined 42
42 undefined
undefined 42
42 undefined
Run Code Online (Sandbox Code Playgroud)
(原始问题如下)
给出以下代码(或类似代码(小提琴)):
<!DOCTYPE HTML>
<html><head><title>-1 Array Index</title></head><body>
<label>p: <input id="p" size="3"></label>
<script type="text/javascript">
var p = document.getElementById('p');
p.onkeyup = function(){
var a = "10 20 30 40".split(/\s+/);
foo(a, p.value*1);
}
function foo(a,p){
var count=a.length, i=0, x;
if (p) a[i=-1]=p;
while (i<10000) x = a[i++ % count];
console.dir(a);
}
</script>
</body></html>
Run Code Online (Sandbox Code Playgroud)
当我关注"p"输入并输入时,我在Developer Console中看到以下内容1 backspace 2:

一旦我看到4294967295(2 32 - 1)的索引显示,事情有时会开始"变坏":有时开发人员工具会自动关闭,有时所有Safari选项卡都会冻结并需要重新启动才能恢复.
奇怪的是,如果我在循环中移除(在这种情况下很大程度上无用),我无法重复这一点.我无法在Chrome或Firefox上重复此操作.
任何人都可以对这个问题根源的可能性有所了解吗?
OS X 10.7.4上的Safari 5.1.7就是这种情况
| 归档时间: |
|
| 查看次数: |
375 次 |
| 最近记录: |