这个'的速度vs javascript中的缓存var?

时间:2016-02-15 20:15:16

标签: javascript performance animation requestanimationframe

我通常不太关心微观优化,直到javascript UI性能(特别是在移动设备上)并保持神圣的16.666666667毫秒以获得平滑不间断的60fps。

我从requestAnimationFrame运行tick函数直到满足条件,并且它依赖于在当前实例上设置的某些值,例如this.velocity,this.translateX等。

我的问题是,是否应该使用this的缓存版本,如在var _this = this;之外在声明之外声明,而不是指“这个地方更快?”要清楚我已经多次调用了几次......下面是一些代码:

swipeIt.prototype.tick = function() {
    if (Math.abs(this.translateX) < (+this.elWidth*1.2 && this.velocity > 6) ) {


        this.velocity = this.velocity*1.15;
        this.translateX = (this.dir === 'left') ? this.translateX - this.velocity : this.translateX + this.velocity;

        requestAnimationFrame(function() {
          _this._update(_this.updateCb);
          _this.tick();
        });

    } else {
       //....
    }
}

任何其他关于进一步优化这一点的建议都会受到欢迎,这是我第一次真正给予这一点。欢呼声。

1 个答案:

答案 0 :(得分:5)

不,你没有看到任何改进。如果存在任何差异,那么由于额外的声明,性能会有很小的下降。

您可能已经看过类似的内容:

var $this = $(this);

在jQuery中。这很有道理,因为$(this)的评估代价很高,因此通过将代码分配给变量然后在任何地方使用该变量,可以大大改善充满$(this)的代码。在你的情况下,评估保存没有任何代价。访问_this只需访问this