grunt jshint 配置不工作

grunt jshint config not working

为 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 | return (this.optional(element) && value=="") || re.test(value); ^ Use '===' to compare with ''.

感谢您的帮助

简短回答:您无法在 options 配置中执行任何其他操作来避免这种情况。

更长的答案: 虽然您在 options 配置中将 eqeqeq 属性 设置为 false(假设双等号 == 的实例不应该抛出错误)jshint 在这种情况下我认为正确地将其报告为错误。

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

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

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

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

替换 value==""

有关三重等于和双重等于运算符的其他信息,以及它的各种怪癖,可以在这个 post

的答案中找到