Конфиг grunt jshint не работает

Возникли проблемы при настройке параметров jshint для grunt

Вот мой 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(значение); ^ Используйте '===' для сравнения с ''.

Спасибо за помощь

1 ответ

Решение

краткий ответ: Вы ничего не можете сделать в своем options Конфигурация, чтобы избежать этого.

более длинный ответ: хотя у вас есть eqeqeq свойство установлено в false в вашем options конфигурация, (которая предполагает экземпляры двойных равных == не должен выдавать ошибку), jshint в этом случае я считаю, что правильно сообщает об этом как об ошибке.

value=="" часть в проверяемом коде - это то, что выдает ошибку (т.е. игнорирует eqeqeq: false вариант). Это не зря!

== Оператор будет сравнивать на равенство после выполнения любых необходимых преобразований типов, что может привести к действительно странным результатам в Javascript. Например:

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

Хотя я понимаю, что двойное равенство дает правильный результат для многих сценариев сравнения, это value=="" Примером, безусловно, является сценарий, в соответствии с которым следует использовать тройное равенство, или, если вы человек с двумя равными, то вы можете заменить value=="" с value.length == 0

Дополнительную информацию относительно операторов тройного равенства и двойного равенства, а также их различных причуд, можно найти в ответе на этот пост.

Другие вопросы по тегам