如何优化JS代码?
How to optimize JS code?
Chrome 剖析说:"Not optimized: assignment to parameter in arguments object"。我可以做些什么来优化此代码?
this.buffer.forEach(function(tilepos, ypos)
{
tilepos.forEach(function(tileinfo, xpos)
{
_self.tiles.putTile('ground', xpos, ypos, _self.ground);
});
});
它可能不喜欢您在块内对 tilepos
采取行动。
如果你想消除错误,我建议你按如下方式进行,但也能获得一点性能提升:
for(var i = 0; i < this.buffer.length; i++)
{
for(var j = 0; j < this.buffer[i].length; j++)
{
_self.tiles.putTile('ground', i, j, _self.ground);
}
}
您很可能通过重新分配函数参数或参数元素来覆盖参数。
function f(a) {
a = 100; // reassigns arguments[0]
};
或
function f(a) {
arguments[0] = 100; // same thing
};
我觉得你的代码没问题,所以我认为问题出在你的 putTile
方法上。如果需要重新分配函数参数,请创建它的本地副本:
function f(a) {
var localA = a;
localA = 100;
}
如果你提供putTile
方法,我可以看一下并更新我的答案。
Chrome 剖析说:"Not optimized: assignment to parameter in arguments object"。我可以做些什么来优化此代码?
this.buffer.forEach(function(tilepos, ypos)
{
tilepos.forEach(function(tileinfo, xpos)
{
_self.tiles.putTile('ground', xpos, ypos, _self.ground);
});
});
它可能不喜欢您在块内对 tilepos
采取行动。
如果你想消除错误,我建议你按如下方式进行,但也能获得一点性能提升:
for(var i = 0; i < this.buffer.length; i++)
{
for(var j = 0; j < this.buffer[i].length; j++)
{
_self.tiles.putTile('ground', i, j, _self.ground);
}
}
您很可能通过重新分配函数参数或参数元素来覆盖参数。
function f(a) {
a = 100; // reassigns arguments[0]
};
或
function f(a) {
arguments[0] = 100; // same thing
};
我觉得你的代码没问题,所以我认为问题出在你的 putTile
方法上。如果需要重新分配函数参数,请创建它的本地副本:
function f(a) {
var localA = a;
localA = 100;
}
如果你提供putTile
方法,我可以看一下并更新我的答案。