定义变量是否比在JS中覆盖变量使用更多资源?

tim*_*xyz 1 javascript

如果您打算使用一个会多次覆盖变量值的函数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 1option 2将被称为30次.

Ian*_*ird 5

[爱的]过早的优化是万恶之源.

您应该根据程序的正确性来调整变量的范围,而不是猜测性能或内存利用率.虽然这是学术事实,局部变量将超过全球的人更快地得到解决,我会很坦率地震惊地发现一个真正的程序,其中有这两者之间是足够的差异对人类用户的注意.本地变量和全局变量之间的内存使用量应该几乎没有差别.(通常情况下,这根本没有区别,因为变量是一个变量,但如果对象有多个实例,则对象的实例变量显然可以重复)

但是,人类用户注意到程序是否产生了错误的结果.一般来说,全局变量很糟糕,因为它们使程序状态更难以推理.当然,这并不是说它们永远不合适.使用有意义的范围,忘记性能,直到您可以证明您有一个真实的,用户明显的问题.