我的 jquery 插件初始化的所有元素在运行时共享相同的局部变量。我做了一个测试,发现因为这条线:
var tmp1 = tmp2 = weird_local_var = 0;
如果我像下面这样写,它不会发生
var normal_local_var = 0;
这不是因为 tmp1 & tmp2,只是用于测试的 dummy var。您可以通过http://jsfiddle.net/7SeRD/查看测试。发生什么事?
我的 jquery 插件初始化的所有元素在运行时共享相同的局部变量。我做了一个测试,发现因为这条线:
var tmp1 = tmp2 = weird_local_var = 0;
如果我像下面这样写,它不会发生
var normal_local_var = 0;
这不是因为 tmp1 & tmp2,只是用于测试的 dummy var。您可以通过http://jsfiddle.net/7SeRD/查看测试。发生什么事?
您可以将您的 init 行更改为:
var tmp1=0, tmp2=0, weird_local_var=0, normal_local_var=0;
// or
var tmp1=0;
var tmp2=0;
var weird_local_var=0;
var normal_local_var=0;
编辑:也请参阅此答案:链接。
从中:
var a = b = [] is equivalent to
var a;
b = [];
a = b;
你正在做的是链接 assignments。
本质上,您是在为 tmp2 分配一个奇怪的本地变量(其值为 0)的引用,然后将对该引用(即 tmp1 -> tmp2)的引用分配给 tmp1。
您在声明它们时不使用“var”关键字,将 v2 和奇怪的本地变量创建为全局变量。
尝试事先创建变量的相同方法,它将按预期工作:http: //jsfiddle.net/MaxPRafferty/2MKgH/
var v2;
var weird_local_var;
var v1 = v2 = weird_local_var = 0;