我在画布上画了一些基本的画,其中 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 事件时分配的变量会更少(这是很多次)另一方面实际访问这些变量意味着我需要在两个不同的范围内查找它们.
我想知道 Javascript 中哪个操作较慢。我的直觉说分配应该慢很多,假设 Javascript 引擎对局部变量使用基于堆栈的分配,但我不确定。