Я согласен с Дэвидом, что ни один из них не должен использоваться. Псевдопротокол javascript может перевести страницу в состояние ожидания в некоторых браузерах, что может привести к неожиданным последствиям. В качестве одного примера я потратил часы, пытаясь отладить веб-приложение, в котором происходил сбой IE6 всякий раз, когда кто-то нажимал на ссылку javascript: вскоре после загрузки страницы. Оказалось, что страница, входящая в состояние ожидания, конфликтует с Flash-фильмом, который пытается инициализировать. Я решил проблему, заменив ссылку на ссылку в следующем формате:
<a href="#" onclick="DoSomething(); return false;">Link</a>
«return false» не позволяет перейти по ссылке.