奇怪的bug或jquery插件中的东西

时间:2012-08-30 16:55:03

标签: jquery jquery-plugins

我的jquery插件初始化的所有元素在运行时共享相同的局部变量。我做了一个测试,发现因为这一行:

var tmp1 = tmp2 = weird_local_var = 0;

如果我写得如下,那就不会发生

var normal_local_var = 0;

这不是因为tmp1& tmp2,只是用于测试的虚拟变量。您可以通过http://jsfiddle.net/7SeRD/查看测试。会发生什么?

2 个答案:

答案 0 :(得分:3)

您可以将初始行更改为:

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;

编辑:也请参阅此答案:link

从中:

var a = b = [] is equivalent to

var a;
b = [];
a = b;

您正在做的是链接 作业

您实际上是将对weird_local_var(其值为0)的引用分配给tmp2,然后将该引用的引用(即tmp1 - > tmp2)分配给tmp1。

答案 1 :(得分:1)

在声明它们时,不使用“var”关键字创建v2和weird_local_var作为全局变量。

尝试预先创建变量的相同内容,它将按预期工作: http://jsfiddle.net/MaxPRafferty/2MKgH/

        var v2;
        var weird_local_var;
        var v1 = v2 = weird_local_var = 0;