【问题标题】:JSHint - ^ 'concise methods' is available in ES6JSHint - ^ '简洁方法' 在 ES6 中可用
【发布时间】:2016-09-07 10:27:10
【问题描述】:

我正在尝试使用 AJAX 提交一个简单的表单。我正在使用 grunt 作为任务运行程序来编译我的 JS 文件等等。

这是我到现在为止所做的。

$("form").submit(function(event) {
    event.preventDefault();

    var formData = {
        $("#username").val(),
        $("#password").val()
    };

    $.ajax({
        url: 'xxx',
        type: 'POST',
        dataType: 'json',
        data: formData,
        encode: true
    })
    .done(function(data) {
        console.log(data);

    })
});

我怀疑任务即将运行时出现 JSHint 错误

$("#username").val(), ^ 'concise methods' 在 ES6(使用 esnext 选项)或 Mozilla JS 扩展(使用 moz)中可用。

这是我的 gruntfile(jshint 任务)

jshint: {
        ignore_warning: {
            options: {
                '-W099': true,
                /*'-W041': true,*/
                '-W044': true,
                '-W033': true,
                '-W043': true,
                '-W049': true,
                '-W004': true,
                '-W065': true,
                '-W083': true, // Corrigir futuramente
            },  
            src: ['public/_assets/src/js/modules/*.js'],
        }
    }

这到底是什么意思?我该如何解决这个错误?

谢谢!

【问题讨论】:

    标签: javascript jquery gruntjs ecmascript-6 jshint


    【解决方案1】:

    formData 正文缺少名称:

    var formData = {
        $("#username").val(),
        $("#password").val()
    };
    

    任何类型的简写对象字面量,无论是计算名称还是内联方法,都是 ES6 特性。

    您几乎可以肯定只需要将名称添加到您已经获得的值中:

    var formData = {
        username: $("#username").val(),
        password: $("#password").val()
    };
    

    使用 ES6,您可以在对象字面量中声明方法,如下所示:

    var formDataFetch = {
      username() {
        return $("#username").val()
      }
    };
    

    (详情请参阅this blog post

    这似乎是解析器认为您的对象包含的内容。

    【讨论】:

    • 你遇到这个问题特别严重,因为$ 是一个合法标识符,所以$(...) 看起来就像一个方法声明。
    猜你喜欢
    • 1970-01-01
    • 2020-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-27
    • 2017-11-30
    • 1970-01-01
    相关资源
    最近更新 更多