如果您打算使用一个会多次覆盖变量值的函数var,那么在执行覆盖的行中使用性能是否有害?
例如,
选项1
var currentTile;
function setCurrentTile(index) {
currentTile = $scope.tiles[index];
}
Run Code Online (Sandbox Code Playgroud)
选项2
function setCurrentTile(index) {
var currentTile = $scope.tiles[index];
}
Run Code Online (Sandbox Code Playgroud)
从历史上看,我一直在使用选项#1,因为var在我的代码中减少数量似乎很直观.但也许它没有任何区别,使用不那么冗长的方法更理想.
任何人都可以建议吗?
我们生成一个如下所示的长数组,
function prepGame() {
// GENERATE TILE PATTERN
var tiles = [];
var times = 30;
for ( var i = 0; i < times; i++ ) {
tiles.push(Math.floor(Math.random() * 9));
}
$scope.tiles = tiles;
}
Run Code Online (Sandbox Code Playgroud)
然后遍历它,将值传递给setCurrentTile(index).所以option 1或option 2将被称为30次.
[爱的]过早的优化是万恶之源.
您应该根据程序的正确性来调整变量的范围,而不是猜测性能或内存利用率.虽然这是学术事实,局部变量将超过全球的人更快地得到解决,我会很坦率地震惊地发现一个真正的程序,其中有这两者之间是足够的差异对人类用户的注意.本地变量和全局变量之间的内存使用量应该几乎没有差别.(通常情况下,这根本没有区别,因为变量是一个变量,但如果对象有多个实例,则对象的实例变量显然可以重复)
但是,人类用户会注意到程序是否产生了错误的结果.一般来说,全局变量很糟糕,因为它们使程序状态更难以推理.当然,这并不是说它们永远不合适.使用有意义的范围,忘记性能,直到您可以证明您有一个真实的,用户明显的问题.
| 归档时间: |
|
| 查看次数: |
96 次 |
| 最近记录: |