哪个是对的:jquery中的空格和/或制表符?

Mat*_*att 1 syntax jquery

我通过jsLint运行了一些jquery,它告诉我应该用空格替换所有选项卡.是对的吗?混合空间和标签是否重要?

这是代码的一部分,如果有帮助(尽管我的理解是stackoverflow将所有选项卡转换为空格):

function modal_dialog(share_div)
{
    $("#share_div_" + share_div).dialog({
        autoOpen: false,
        modal: true,
        height: 158,
        width: 400
    });

    $("#share_div_" + share_div).dialog("open");

    $(document).on("click", ".ui-widget-overlay", function() {
        $("#share_div_" + share_div).dialog("close");
    });
}
Run Code Online (Sandbox Code Playgroud)

Mic*_*ary 6

jQuery只是一个JavaScript库,所以你真的在问你的JavaScript代码是应该使用制表符还是空格.

答案是,这取决于你.JSLint是一个非常自以为是的程序,由一位非常自以为是的作者撰写.他的意见值得倾听,但不应被视为福音 - 许多有经验的JavaScript开发人员对某些问题有不同的看法,即使他们在其他问题上也同意他.

如果你想JSLint的更灵活的版本,尝试JSHint,JSLint的的具有多个选项的叉子来定制它,事情没有真正的问题不太挑剔.

特别是空格和选项卡无关紧要,只要您在代码中保持一致并以其他开发人员可以理解的方式缩进,并且您的代码易于维护.混合空格和标签是个坏主意; 挑选一个或另一个.至少,它们永远不应混合在给定的源文件中.

这并不是说没有关于空格或标签的论据.我自己更喜欢标签,并有充分的理由使用它们.其他人使用空间并有充分的理由使用它们.这取决于哪个原因对我们每个人都更重要.

如果您正在编辑其他人的文件,请查看他们正在使用的缩进样式并坚持使用它.我发现非常有帮助的一件事是使用像Komodo这样的编辑器,它可以自动检测标签或空格的使用以及如果它是空格则使用多少缩进,并设置其缩进设置以匹配每个单独的源文件.这使我很容易与我正在编辑的文件保持一致,即使它不遵循我自己的个人约定.

你缩进代码的方式看起来很好,有趣的是,标签或空格在你的风格中同样适用.我建议改变的一件事是:

function modal_dialog(share_div)
{
    // ...
}
Run Code Online (Sandbox Code Playgroud)

在其他地方,你将开放的花括号放在同一条线上:

$(document).on("click", ".ui-widget-overlay", function() {
    $("#share_div_" + share_div).dialog("close");
});
Run Code Online (Sandbox Code Playgroud)

像制表符与空格一样,这是最好保持一致的情况.选择一种支撑方式或另一种支撑方式并随处使用.

在许多语言中,您编写此文件的方式无关紧要.但是在JavaScript中,将大括号放在同一行是一个明显的赢家,因为这种情况:

function foo()
{
    return
    {
        a: 1,
        b: 2
    }
}
Run Code Online (Sandbox Code Playgroud)

由于自动分号插入,这结果是语法错误.你必须将花括号放在与return此处语句相同的行上.(尝试一下,看看.)因为你必须这样做return,你可以在任何地方这样做:

function foo() {
    return {
        a: 1,
        b: 2
    }
}
Run Code Online (Sandbox Code Playgroud)

某些编码样式不适用于制表符,例如这种编写不适合单行的长函数调用的方式:

    someFunctionWithLongName(firstParam,
                             secondParam + somethingAdded - subtracted,
                             thirdParam);
Run Code Online (Sandbox Code Playgroud)

如果您使用标签,然后secondParamthirdParam打算与排队firstParam只有在选项设置是完全正确的.这是许多人喜欢空间的一个原因,或者至少说"缩进标签,对齐空间".也就是说,使用制表符直到someFunctionWithLongName调用的开头,然后在第二个和第三个参数之后用于附加对齐的空格.

我认为这种方法是一个维护问题,我更喜欢用不同的格式化风格来避免这个问题:

    someFunctionWithLongName(
        firstParam,
        secondParam + somethingAdded - subtractThis,
        thirdParam
    );
Run Code Online (Sandbox Code Playgroud)

现在再一次,选择标签或空格并不重要.缩进在任何一种方式都可以正常工作,并且没有列对齐,您必须担心组合制表符和空格.

有趣的是,这也正是我们缩进代码块的方式:

    if( a ) {
        b();
        c();
    }
Run Code Online (Sandbox Code Playgroud)

对我而言,在缩进方面能够对待{}和()同样非常有吸引力.是的,我也以同样的方式做事:

    var array = [
        firstElement,
        secondElement,
        thirdElement
    ];
Run Code Online (Sandbox Code Playgroud)

不:

    var array = [firstElement,
                 secondElement,
                 thirdElement];
Run Code Online (Sandbox Code Playgroud)