javascript - 在 if 中重新定义变量并像 php 一样在外部使用它

标签 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 时出现错误

(变量已经定义)&(变量超出范围使用)

enter image description here

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

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

最佳答案

在 javascript 中没有 block 作用域的概念,所有变量都将在各自的函数作用域/全局作用域中声明。

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

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

关于javascript - 在 if 中重新定义变量并像 php 一样在外部使用它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19027550/

相关文章:

javascript - 当我单击日期两次时,bootstrap datepicker 无效日期问题?

javascript - 访问和更改数据值

javascript - Google Analytics 应该放在 HTML 页面的头部还是底部?

javascript - 值从 html 下拉列表传递到 javascript

javascript - 浏览器扩展导致网站出现错误

javascript - if/else 语句不调用函数?

javascript - Chrome 扩展 - 如何将变量从 JS 传递到 popup.html?

javascript - 锁定 Google Apps 脚本执行直到文本被替换

javascript - 带播放列表的 HTML 5 音频

jquery - 动态新规则验证不起作用