Делаю проверки только там, где это нужно. Например:
function x(data) {
// data не проверяю, потому что если там не объект, что-то не так
// поэтому пусть будет ошибка, чтобы об этом стало известно
if (data.x) // проверяю, потому что поле "x" может быть, а может и не быть при нормальной работе
}
Мне не нравится, например, что jQuery, когда ничего не находит, возвращает пустую коллекцию. Вешаешь событие по какому-нибудь селектору, а потом верстка меняется, по селектору уже ничего не находится, но всё это происходит по-тихому и о баге может быть долго ничего не известно.