Нет, для js такого нет. Нужно понимать, что определить где используемый код, а где неиспользуемый довольно нетривиальная задача. К примеру, у вас есть метод некоего класса, упрощенно:
function foo() {
...
}
Но вы вызываете ее так:
obj[getMethodName()]()
То есть getMethodName() возвращает вам строку foo и вы таким образом вызываете функцию foo(). И линтер и IDE скажут вам, что якобы функция foo() не используется, но, как мы видим, это не так. Тем не менее, это редкий сценарий и вряд ли вы когда-либо будете такое использовать. Что касается UglifyJS, то он удаляет только unreachable код. Например код, находящийся после return. Резюмируя, можно сказать, что связка линтер + минификатор на 99% дадут вам желаемый эффект.