Какую функцию использовать правильнее?
var a = document.querySelectorAll('.link');

Array.prototype.forEach.call(a, function(el) {
  el.addEventListener('click', function() {
    // что-нибудь делаем
  });
});
1. Метод forEach у DOM коллекции не стандартен, работать будет не везде
2. События слушаем только через addEventListener
3. Создавать инстанс объекта (массива) ради вызова метода прототипа - зло, жрущее память и такты процессора
a.forEach.call(a, function(el) {
а серьезно, в первом подходе нет необходимости т.к. "a" и так массив. и первый способ  менее читабелен.