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

时间:2013-09-26 11:53:53

标签: 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);
});

代码工作正常,请参阅jsfiddle http://jsfiddle.net/Xn7xG/

上的示例

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

(var已定义)&amp; (var使用超出范围)

enter image description here

我不知道这是否意味着我的代码在所有浏览器和情境中都无法正常工作

上面编写此代码的正确方法是什么?

1 个答案:

答案 0 :(得分:5)

在javascript中没有块范围的概念,所有变量都将在相应的函数范围/全局范围内声明。

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

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);
});