Иногда необходимо проверить, есть ли у нас значение в функции или нет, и сама сумма не важна для нас, но имеет ли это значение.
например, мы хотим проверить, есть ли у пользователя мажор или нет, и у нас есть такая функция:
hasMajor(){return this.major}//it return "(users major is)Science"
но ответ не важен для нас, мы просто хотим проверить, имеет ли он мажор или нет, и нам нужно логическое значение (true или false), как мы его получаем:
просто так:
hasMajor(){ return !(!this.major)}
или как тот же
hasMajor(){return !!this.major)}
если this.major имеет значение, то !this.major
возвращает false, но поскольку значение имеет выход, и мы должны вернуть true, мы используем! дважды, чтобы вернуть правильный ответ !(!this.major)