Как часто JavaScript перекомпилирует литералы регулярных выражений в функциях?

Для этой функции:

function doThing(values,things){
  var thatRegex = /^http:\/\//i; // is this created once or on every execution?
  if (values.match(thatRegex)) return values;
  return things;
}

Как часто движку JavaScript приходится создавать регулярное выражение? Один раз за выполнение или один раз за загрузку страницы / синтаксический анализ скрипта?

Чтобы избежать ненужных ответов или комментариев, я лично предпочитаю размещать регулярное выражение вне функции, а не внутри. Вопрос в поведении языка, потому что я не уверен, где это искать, или это проблема движка.


РЕДАКТИРОВАТЬ:

Мне напомнили, что я не упоминал, что это будет использоваться в цикле. Мои извинения:

var newList = [];
foreach(item1 in ListOfItems1){ 
  foreach(item2 in ListOfItems2){ 
    newList.push(doThing(item1, item2));
  }
}

Итак, учитывая, что он будет использоваться много раз в цикле, имеет смысл определять регулярное выражение вне функции, но такова идея.

также обратите внимание, что сценарий является довольно обобщенным с целью изучения только поведения и стоимости создания регулярного выражения.

20
задан jcolebrand 11 January 2012 в 18:36
поделиться