说我有一段代码,例如
for (j = 0; j < 4; j++) {
for (var i = 0; i < 4; i++) {
str = pieceData[piece][rotation]
char = str.substr(k, 1);
if (char == 1) {
c.fillStyle = pieceColours[piece]
c.fillRect(x + (i * 20), y + (j * 20), 20, 20)
c.fill()
} else {
c.fillStyle = 'green'
if (x + (i * 20) > 180) {
c.fillStyle = 'red'
}
c.fillRect(x + (i * 20), y + (j * 20), 20, 20)
c.stroke()
}
k++
}
}
k = 0
如果我在
之类的嵌套函数中调用它,速度会变慢吗?function pieceGen() {
for (j = 0; j < 4; j++) {
for (var i = 0; i < 4; i++) {
str = pieceData[piece][rotation]
char = str.substr(k, 1);
if (char == 1) {
c.fillStyle = pieceColours[piece]
c.fillRect(x + (i * 20), y + (j * 20), 20, 20)
c.fill()
} else {
c.fillStyle = 'green'
if (x + (i * 20) > 180) {
c.fillStyle = 'red'
}
c.fillRect(x + (i * 20), y + (j * 20), 20, 20)
c.stroke()
}
k++
}
}
k = 0
}
//________________________________________________________________________
function animate() {
pieceGen()
requestAnimationFrame(animate)
}
由于笔记本电脑的性能不佳,我需要考虑到这一点,如果我使用越来越多的嵌套功能,它会减慢速度吗?
答案 0 :(得分:3)
函数调用在javascript中的开销很小,请随意使用它们,因为它们可以使您的代码更简洁
答案 1 :(得分:0)
函数是函数对象。在JavaScript中,不是原始类型(未定义,空,布尔值,数字或字符串)的任何对象都是对象。 这意味着,在第二种情况下,您将有以下开销:
有两个附加功能:
对于性能而言,这两者都不重要。
代码的可读性和封装将为您提供更好的服务!您应该始终考虑性能,这是事实,但是函数是javascript的构建块,应该使用它们。