demi,
Вы не заметили, что результат этой функции - 
массив исходных кодов?
Сделайте проще (чтоб два раза не обходить массив), пусть выполняется сразу в функции:
function evalScripts(str) {
  var scriptFragment = '(?:<script.*?>)((\n|\r|.)*?)(?:<\/script>)';
  var matches = str.match(new RegExp(scriptFragment, 'img'));
  if (matches) {
    var oneScriptPattern = new RegExp(scriptFragment, 'im');
    for (var i = 0; i < matches.length; i++)
      eval((matches[i].match(oneScriptPattern) || ['', ''])[1]);
  }
  return true;
}