Почему неверно работает условие?

Есть функция:
validateFile = function(){
                if (opts.fileTypes !== null && !opts.fileTypes.test(this.type)) {
                    this.error = 'Разрешена загрузка следующих типов файлов: jpg, jpeg, gif, png.';
                }
                if (opts.maximumSize > 0 && opts.maximumSize < this.size) {
                    this.error = 'Размер изображения не должен превышать 8.00 MB';
                }
                return this;
            }


opts.fileTypes это RegExp. Если внутрь первого условия вставить console.log(opts.fileTypes !== null && !opts.fileTypes.test(this.type)) - всегда выдает false;
Почему-то при вызове ее в цикле при прочих равных this.error == 'Разрешена загрузка следующих типов файлов: jpg, jpeg, gif, png.' через один. Как такое может быть?

UPD:
Такое условие работает хорошо:
opts.fileTypes !== null && this.type.search(opts.fileTypes) == -1
  • Вопрос задан
  • 2176 просмотров
Пригласить эксперта
Ответы на вопрос 1
opts.fileTypes !== null &&
Может, стоит все же делать ==, а не !==, и вместо && - ||?

!opts.fileTypes.test(this.type)
Что должна возвращать функция test()? Код бы глянуть
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы