在if中重新定义变量并在php之外使用它

Jim*_*Jim 1 javascript jquery

我需要传递一个变量取决于if,我写了这段代码

var firstFoo  = 2;

$('div').click(function() {
    if(firstFoo == 1){
        var
            var1 = 'var1',
            var2 = 'var2',
            var3 = 'var3';
    }
    else{
        var
            var1 = 'no var1',
            var2 = 'no var2',
            var3 = 'no var3';
    }

    $('<span></span>',{
        'data-var1': var1,
        'data-var2': var2,
        'data-var3': var3
    }).insertAfter(this);
});
Run Code Online (Sandbox Code Playgroud)

代码工作得很好看jsfiddle的例子http://jsfiddle.net/Xn7xG/

但是当我点击JSHint时,我遇到了错误

(var已定义)&(var超出范围)

在此输入图像描述

而且我不知道这是否意味着我的代码在所有浏览器和情况下都不能正常工作

上面写这段代码的正确方法是什么?

Aru*_*hny 5

在javascript中没有块作用域的概念,所有变量都将在相应的函数作用域/全局作用域中声明.

在您的情况下,您在相同的功能范围内声明两次相同的变量,这就是警告的原因....即使您在页面底部声明了一个变量,它的范围也将是整个页面因为吊装也是

var firstFoo = 2;

$('div').click(function () {
    var var1, var2, var3;
    if (firstFoo == 1) {
        var1 = 'var1';
        var2 = 'var2';
        var3 = 'var3';
    } else {
        var1 = 'no var1';
        var2 = 'no var2';
        var3 = 'no var3';
    }

    $('<span></span>', {
        'data-var1': var1,
        'data-var2': var2,
        'data-var3': var3
    }).insertAfter(this);
});
Run Code Online (Sandbox Code Playgroud)