【问题标题】:Weird bug or something in jquery pluginjQuery插件中的奇怪错误或其他东西
【发布时间】:2026-01-31 22:05:01
【问题描述】:

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

var tmp1 = tmp2 = weird_local_var = 0;

如果我像下面这样写,它不会发生

var normal_local_var = 0;

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

【问题讨论】:

  • 这正是我建议不要在 var 语句中进行任何分配的原因。

标签: jquery jquery-plugins


【解决方案1】:

通过在声明它们时不使用“var”关键字,将 v2 和奇怪的本地变量创建为全局变量。

先尝试同样的方法创建变量,它会按预期工作: http://jsfiddle.net/MaxPRafferty/2MKgH/

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

【讨论】:

    【解决方案2】:

    您可以将您的 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;
    

    编辑:也看到这个答案:link

    来自它:

    var a = b = [] is equivalent to
    
    var a;
    b = [];
    a = b;
    

    你正在做的是链接 分配

    您实际上是在将一个奇怪的本地变量(其值为 0)的引用分配给 tmp2,然后将该引用(即 tmp1 -> tmp2)的引用分配给 tmp1。

    【讨论】:

      最近更新 更多