JSHint - ^ '简洁方法' 在 ES6 中可用

Posted

技术标签:

【中文标题】JSHint - ^ \'简洁方法\' 在 ES6 中可用【英文标题】: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'],
        
    

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

谢谢!

【问题讨论】:

【参考方案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)

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

【讨论】:

你遇到这个问题特别严重,因为$ 是一个合法标识符,所以$(...) 看起来就像一个方法声明。

以上是关于JSHint - ^ '简洁方法' 在 ES6 中可用的主要内容,如果未能解决你的问题,请参考以下文章

Vue项目中提示JSHint: import is only available in ES6 (use esversion: 6)解决

JSHint 中的 ES6 - .jshintrc 有 esversion,但仍然收到警告(使用 atom)

IntelliJ JSHint esversion 选项

ES6对象属性名简洁表示法和表达式对象新方法属性的遍历

es6的一些简洁写法(代码优化)

我的 vim 中的 JSHint 将 'yield' 标记为警告。