在闭包或本地定义变量,哪个更快?

时间:2012-09-12 20:13:49

标签: javascript closures

我得到了一些带有jcanvas的画布的基本绘图:

this.div.bind("mousedown", function(ev) {
        ev.preventDefault();
        ev.stopPropagation();
        var point= [];
        var pX, pY;
        point[0]= (ev.pageX- this.offsetLeft);
        point[1]= (ev.pageY- this.offsetTop);
        that.div.bind("mousemove", function(ev) {
            ev.preventDefault();
            ev.stopPropagation();
            pX= (ev.pageX- this.offsetLeft);
            pY= (ev.pageY- this.offsetTop);
            that.canvas.drawLine({
                strokeStyle: "#000",
                strokeWidth: 10,
                rounded: true,
                x1: point[0], y1: point[1],
                x2: pX, y2: pY,
            });
            point[0]= pX;
            point[1]= pY;
        });

        that.div.bind("mouseup", function(ev) {
            ev.preventDefault();
            ev.stopPropagation();
            that.div
                .unbind('mousemove')
                .unbind('mouseup');
        });
    }); 

注意到我在mousedown事件中声明了pX和pY,使它们可以作为绑定到mouseover事件的内部函数的闭包。我想知道什么会更快,在mouseover事件中声明它们或现在是。

一方面将这两个变量声明为外部意味着在调用mouseover事件时会分配更少的变量(这很多次)另一方面实际访问这些变量意味着我需要查看两个不同的范围找到他们。

我想知道Javascript中哪个操作速度较慢。我的直觉说配置应该慢得多,假设Javascript引擎使用基于堆栈的局部变量分配,但我不确定。

0 个答案:

没有答案