gpt4 book ai didi

javascript - Firefox 30 数组处理中的 JavaScript 错误

转载 作者:行者123 更新时间:2023-12-03 12:23:42 24 4
gpt4 key购买 nike

有人可以向我解释一下 Firefox 中的这种行为吗?

减少代码片段

function Calc(val,str, cmd,stack)
{
console.log(str, cmd, stack);

while(c = cmd.pop())
{
if (c=='0') stack.push(val);
}
console.log(str,cmd, stack)
}

var k,i,l,s;

k=3;
for (i=1;s=i.toString(6), !s[k]; i++)
{
l=s.split(0).length;
if (l+l-1==s.length)
{
Calc(1,s, (s+'00').split(''), [])
}
}

JSFiddle:http://jsfiddle.net/eQKTX/1/

在 Firefox 30.0 中,从某个时刻开始,字符串 split 不再起作用。我尝试使用 split 和 spread 运算符 [...],结果是一样的。我认为 Calc 函数内的 cmd.pop 是罪魁祸首。 Pop 确实更改了数组,但该函数应在每次调用时获取一个全新的数组。

它在 Chrome 和 MSIE 10 中完美运行

最佳答案

我不确定代码的作用,但我确认 Chrome 和 Firefox 中记录的数据是不同的。

在 Chrome 中

1 ["1", "0", "0"] []
1 [] [1, 1]
...

在火狐浏览器

"1" Array [  ] Array [ 1, 1 ]
"1" Array [ ] Array [ 1, 1 ]
...

我猜原因是 console.log 在 Firefox 中异步运行。

这可能是相关的错误: https://bugzilla.mozilla.org/show_bug.cgi?id=754861#c7

当调用前面的console.log时,stack是空数组,但是 stack 在调用后立即被修改,修改后的数据用于记录。

如果我将 JSON.stringify 添加到 console.log,Chrome 和 Firefox 都会输出相同的日志,所以我想没有其他不同的行为。

console.log(JSON.stringify([str, cmd, stack]));

关于javascript - Firefox 30 数组处理中的 JavaScript 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24324040/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com