!!timerId - это приведение значения к логическому типу. т.е. типа
// ЭТОТ КОД ТОЛЬКО ДЛЯ ДЕМОНСТРАЦИИ. НЕ ПИШИТЕ ТАК
if (timerId) {
return true;
} else {
return false;
}
Восклицательный знак указывается два раза для того, чтобы не инвертировать логическое значение.
var a = 10;
var b = !a; // false, т.к. 10 это true, а !true это false (т.к. ! - знак отрицания).
var c = !b; // !false == true
c === !!a // true, т.к. !!10 === !false === true
c === !b; // true, т.к. !(!a) === !!a === !!10 === !false === true
2) это видимо для того, чтобы первый случай !!timerId был равен false, т.к. !!null === false
UPD: прочитайте вот это обязательно
https://learn.javascript.ru/types-conversion