В выражении if нет никаких преимуществ (или объективных) во время выполнения.Оценка, выполненная оператором if, даст точно такой же результат, что и оценка, произведенная двойным восклицательным знаком.Разницы нет.
Двойные восклицательные знаки - полезное выражение для обеспечения логического значения, основанного на правдивости.Рассмотрим, к примеру:
var text = undefined;
console.log(text); // undefined
console.log(!!text); // false
// It would make sense here, because a boolean value is expected.
var isTextDefined = !!text;
// It would also affect serialization
JSON.stringify(text); // undefined (non-string)
JSON.stringify(!!text); // "false"
Я полагаю, что это привычка, которая была подхвачена из-за описанных выше случаев использования, поэтому при обращении к истинности переменной всегда конвертируется в логическое значение.Нам (людям и программистам) легче следовать правилу, когда оно всегда применяется.Вы либо будете постоянно использовать мигалки в своей машине, даже когда вокруг никого нет, или, скорее всего, вы время от времени (или, может быть, часто) забываете сигнализировать, когда это необходимо.