0

为 grunt 设置 jshint 选项时遇到问题

这是我的 gruntfile.js

grunt.initConfig( {
    jshint : {
        options: { 

            curly: false,
            asi: true,
            eqeqeq: false,
            maxparams: 5,
            undef: false,
            unused: false,
            eqnull: true,
            browser: true,
            devel: true,
            expr: true,
            jquery: true ,
            evil : true 
        },
        files : { 
            src : [ 
                'dev/*.js', 'dev/**/*.js' ,  
                'files-lib/*.js', 'files-lib/**/*.js' ]
        },
    }, 

仍然收到错误

71 | 返回 (this.optional(element) && value=="") || 重新测试(值);^ 使用 '===' 与 '' 进行比较。

感谢您的帮助

4

1 回答 1

2

简短的回答:在您的配置中,您无能为力options来避免这种情况。

更长的答案:虽然您在配置中eqeqeq设置了属性(假设双等号的实例不应该引发错误),但在这种情况下,我相信正确地将其报告为错误。falseoptions==jshint

正在验证的value==""代码部分是引发错误的部分(即它忽略了该eqeqeq: false选项)。这是有充分理由的!

运算符将==在进行任何必要的类型转换后比较是否相等,这可能会导致 Javascript 中的结果非常古怪。例如:

0 == ""     // true
false == "" // true

虽然我很欣赏 double equals 在许多比较场景中产生正确的结果,但这个value==""例子肯定是一个应该使用三等号的场景,或者如果你是一个只有 double equals 的人,那么你可以替换value==""value.length == 0

关于三等号和双等号运算符的其他信息,以及各种怪癖,可以在这篇文章的答案中找到

于 2017-05-25T08:40:48.423 回答