В последнем случае возбуждается исключение, это значит, что он менее производительный чем первый.
И еще, не назначайте так обработчики событий:
element.onclick
Нужно использовать специальные методы для работы с событиями (
addEventListener и  
attachEvent). Для этого можно написать свою обертку:
<a href="#" id="link">click</a>
<script>
var $ = function(element) 
{
      if (!(this instanceof $))
            return new $(element);
  
      this.element = element;
};
$.prototype = 
{
      constructor: $,
      on: function(event, callback) 
      {
            if (typeof event !== 'string' && typeof callback !== 'function')
                  return this;
    
            if (this.element.addEventListener)
                  this.element.addEventListener(event, callback, false); 
    
            else if (this.element.attachEvent) 
            {
                  this.element.attachEvent('on' + event, function(event) 
                  {
                        callback.call(this, {
                              // ...
                        });
                  });
            }
      return this;
      }
};
$(document.getElementById('link')).on('click', function(event) {
      alert(event.target);
});
</script>