JSHint并不喜欢我的缩进

时间:2014-04-29 20:33:25

标签: javascript indentation jshint

当我运行构建脚本时,JSHint向我显示以下错误:

Running "jshint:all" (jshint) task

app/module/monitoring.module/model/test.service.js
  line 8   col 13  Expected 'x' to have an indentation at 5 instead at 13.
  line 9   col 13  Expected 'y' to have an indentation at 5 instead at 13.
  line 10  col 9   Expected '}' to have an indentation at 1 instead at 9.

✖ 3 problems

以下是此测试文件的代码:

'use strict';

var foo = { 'bar': function () {} };
foo
    .bar(
        'a',
        {
            'x': 1,
            'y': 2
        },
        'b'
    );

如果我直接运行jshint test.service.js,则不会抛出任何错误。这是我的.jshint

{
    "node": true,
    "browser": true,
    "esnext": true,
    "bitwise": false,
    "camelcase": true,
    "curly": false,
    "eqeqeq": false,
    "immed": true,
    "indent": 4,
    "latedef": true,
    "loopfunc": false,
    "newcap": true,
    "noarg": true,
    "quotmark": "single",
    "regexp": true,
    "undef": true,
    "unused": true,
    "strict": true,
    "trailing": true,
    "smarttabs": true,
    "boss": true,
    "globals": {
        "angular": false,
        "alert": false,
        "jQuery": false,
        "$": false,
        "d3": false,
        "_": false,
        "describe": false,
        "it": false,
        "expect": false,
        "kronosCharts": true,
        "moment": false,
        "OpenLayers": false
    }
}

但我认为,这些选项都不应该告诉JSHint不喜欢我的缩进。我在这里做错了什么?

修改

因为有评论,我的缩进不好和/或违反标准,这是真正的代码。如果你能告诉我一个好的(或标准的)方法来缩进,这对我也有帮助:

var webserviceRequest = webservice.createRequest();
webserviceRequest
    .addMethodRequest(
        'GetFilterItems',
        {
            'Start': start,
            'NumItems': numItems
        },
        function (items) {
            items = syncItems(items);
            callback(items);
        }
    )
    .send()
;

编辑2

这是JSHint告诉我要做的事情:

'use strict';

var foo = { 'bar': function () {} };
foo
    .bar(
        'a',
        {
    'x': 1,
    'y': 2
},
        'b'
    );

明天我会写错误报告......

1 个答案:

答案 0 :(得分:0)

这是我的建议作为起点;如果您不确定如何缩进/替换代码,请将其粘贴到删除所有空格(http://jscompress.com/)的程序中,然后将其粘贴到格式化程序(http://jsbeautifier.org/)中看看它是怎么出来的。

您的示例按原样输出:

"use strict";
var foo = {
    bar: function () {}
};
foo.bar("a", {
    x: 1,
    y: 2
}, "b")

var webserviceRequest = webservice.createRequest();
webserviceRequest.addMethodRequest("GetFilterItems", {
    Start: start,
    NumItems: numItems
}, function (e) {
    e = syncItems(e);
    callback(e)
}).send()